using System;
using System.Drawing;
using System.Linq;
using PowerLanguage.Function;
using ATCenterProxy.interop;
 
namespace PowerLanguage.Strategy
{
    public class Example_StopLimit : SignalObject
    {
        private IOrderMarket buyMarketOrder, sellMarketOrder;
        private IOrderStopLimit sellStopLimitOrder;
        private double sellStopPrice, sellLimitPrice;
 
        public Example_StopLimit(object _ctx) : base(_ctx) { }
 
        protected override void Create()
        {
            buyMarketOrder = OrderCreator.MarketNextBar(new SOrderParameters(
                Contracts.Default, "EnterLong", EOrderAction.Buy));
 
            sellMarketOrder = OrderCreator.MarketNextBar(new SOrderParameters(
                Contracts.Default, "ExitLong", EOrderAction.Sell));
 
            sellStopLimitOrder = OrderCreator.StopLimit(new SOrderParameters(
                Contracts.Default, "StopLMT", EOrderAction.Sell));
        }
 
        protected override void StartCalc()
        {
            Output.Clear(); // Clear PowerLanguage Editor output tab
        }
 
        protected override void CalcBar()
        {
            // When flat, enter long on first bar of day
            if ((StrategyInfo.MarketPosition == 0) && (Bars.Time[0].Date != Bars.Time[1].Date))
            {
                buyMarketOrder.Send();
 
                sellStopPrice  = Bars.Low[0] - Bars.Range();
                sellLimitPrice = Bars.Low[0] - (Bars.Range() * 1.5);
 
                Output.WriteLine("{0} - Buy order submitted. Sell stop calculated @ {1} with limit {2}",
                    Bars.Time[0].ToString("d-M HH:mm:ss"),
                    sellStopPrice,
                    sellLimitPrice);
            }
 
            // Long order management
            if (StrategyInfo.MarketPosition > 0)
            {
                // Submit the stop-limit order as long as there is an open position
                sellStopLimitOrder.Send(sellStopPrice, sellLimitPrice);
 
                Output.WriteLine("{0} - Submitting sell stop @ {1} with limit {2}",
                    Bars.Time[0].ToString("d-M HH:mm:ss"),
                    sellStopPrice,
                    sellLimitPrice);
 
                // Time stop; exit the position after 15 bars
                double barsInPosition = Bars.CurrentBar - CurrentPosition.OpenTrades[0].EntryOrder.BarNumber;
                if (barsInPosition >= 15)
                {
                    sellMarketOrder.Send();
 
                    Output.WriteLine("{0} - Position open for {1} bars, submitting exit long market order",
                        Bars.Time[0].ToString("d-M HH:mm:ss"),
                        barsInPosition);
                }
            }
        }
    }
}

 

MC- 挂单STOP交易的更多相关文章

  1. 转载自 BotVS 「 珍藏版 」如何搭建一个完整的交易框架

    [img]http://dn-filebox.qbox.me/8c218c119046b2a25df2d9c7b00c1e0fa6899bdd.png[/img]NO:01 交易策略 ≠ 交易系统. ...

  2. 量化交易中VWAP/TWAP算法的基本原理和简单源码实现(C++和python)(转)

    量化交易中VWAP/TWAP算法的基本原理和简单源码实现(C++和python) 原文地址:http://blog.csdn.net/u012234115/article/details/728300 ...

  3. 券商VIP交易通道

    打新不成就炒新.随着新股发行上市的再次重启,巨大的获利机会引来投资者的争相竞逐,可并非所有投资者都能抢到新股筹码.“每天都在涨停板追这些新股,但从来没有买到过.”证券时报记者在采访中听到不少中小散户如 ...

  4. vnpy交易学习接口(2)

    #来源于github下载vnpy版本  20180413 11.多投资标的情况下,该如何修改? 10.stop和limit报单有什么区别呢? 在交易时用得最多的是二类定单,第一类是市价单(Market ...

  5. 高频交易算法研发心得--MACD指标算法及应用

    凤鸾宝帐景非常,尽是泥金巧样妆. 曲曲远山飞翠色:翩翩舞袖映霞裳. 梨花带雨争娇艳:芍药笼烟骋媚妆. 但得妖娆能举动,取回长乐侍君王. [摘自<封神演义>纣王在女娲宫上香时题的诗] 一首定 ...

  6. Oracle交易流水号问题

    需求:生成交易流水号,每次新增一条记录时都自动加1,且流水号形式为000000001形式的10位数字. 思路:利用序列可以生成自增的流水号,只需要在前面添加N个0即可,同时,由于数字的长度一定,因此可 ...

  7. android/java 根据当前时间判断股票交易状态(未开盘 交易中 休市中 已收盘)

    /** * @param data yyyy-MM-dd HH:mm:ss 时间 * @return 未开盘 交易中 休市中 已收盘 */ public static String getSotckS ...

  8. 微信JSApi支付~订单号和微信交易号

    返回目录 谈谈transactionId和out_trade_no 前一篇微信JSApi支付~坑和如何填坑文章反映不错,所以又写了个后篇,呵呵. 每个第三方在线支付系统中都会有至少两类订单号,其一为支 ...

  9. python 优矿自动化交易

    一.进入官网,打开notebook 自己新建 notebook 二.在代码中编写自己的交易策略 https://uqer.io/help/faqApi/#account相关属性  在帮助文档中可以找到 ...

  10. [python]初试页面抓取——抓取沪深股市交易龙虎榜数据

    [python]抓取沪深股市交易龙虎榜数据 python 3.5.0下运行 没做自动建立files文件夹,需要手动在py文件目录下建立files文件夹后运行 #coding=utf-8 import ...

随机推荐

  1. jvm的垃圾回收几种理解

    1.引用计数器回收 给每个对象设置一个计数器,当该对象被引用时,计数器加1,当有其他变量不再引用该对象时,计数器减1.直到计数器数值为0,回收器视为他是‘垃圾’,可以被回收,当该对象被回收时,其他引用 ...

  2. DUIlib使用Fastreport--自定义的数据

    报表根据数据源的可以分为拉模式和推模式,拉模式就是在报表中添加数据源组件从数据库中拉取数据,我们上篇报表的简单使用就是拉模式.而推模式就是在程序中构造数据托给报表显示.这篇我们这要说的是推模式. 在程 ...

  3. python json.load 的奇葩错误

    json.load() 可以参数是文件对象, 但是这种方式会遇到莫名其妙的错误: No JSON object could be decoded 有的朋友说的是utf-8编码有BOM和无BOM造成的. ...

  4. 关于数据汇总方面返回Json数据的小小心得

    在一开始的开发中,计算好相关数据,然后通过 1.拼串 2.实例化Dictory对象再通过JavaScriptSerializer转换为json. 其中,2只适合于二维数据.1适合多维数据,但拼串比较费 ...

  5. ubuntu搭建git服务器

    1.准备两台ubuntu虚拟机,其中一个作为server,另一个作为client.检查是否安装ssh,如果没有安装:sudo apt-get install openssh-server, 然后在se ...

  6. Asp.Net BulletedList使用及详解

    BulletedList使用及详解   文章来源:www.cnblogs.com/xiohao/archive/2013/10/09/3359263.html BulletedList是一个让你轻松在 ...

  7. anroid平台指纹方案

    神盾的FingerPrint方案 在Java层,神盾主要提供如下几个包: egistec.fingerauth.api.FPAuthListeners; egistec.fingerauth.api. ...

  8. Android打开某个activity时自动弹出输入法键盘

    最近在做一个可以让用户修改自己账户资料的activity,具体是打开后有一个EditText,然后用户可以在这里输入相关信息,但是做好后发现,进入这个activity时系统并没有自动弹出输入法键盘,于 ...

  9. 2015 asia xian regional F Color (容斥 + 组合数学)

    2015 asia xian regional F Color (容斥 + 组合数学) 题目链接http://codeforces.com/gym/100548/attachments Descrip ...

  10. 一:python入门

    Python简介 这点就不做陈述了,相信各位朋友已经已经有了一定的了解. Python特色: 1:简单 第一次接触Python给我的感觉它的语法阅读就像是阅读一本英文书的目录一样,简单易懂,它的语法要 ...