【问题标题】:About MQL5, how to close a trade and enter a trade关于 MQL5,如何关闭交易并进入交易
【发布时间】:2019-03-13 19:17:45
【问题描述】:

在下面的代码中,我想在我放置加号的地方打开卖出之前关闭所有未平仓的买入交易。 我想在我放星号的地方开仓之前关闭所有未平仓的卖出交易。
拜托,谁能帮我写代码?提前感谢您的帮助

#include <Trade\Trade.mqh>
CTrade trade;

input double MyLotSize = 0.01;

void OnTick()
{
   double myMovingAverageArray1[],myMovingAverageArray2[];
   int movingAverageDefinition1 = iMA (_Symbol,_Period, 20,0,MODE_EMA,PRICE_CLOSE);
   int movingAverageDefinition2 = iMA (_Symbol,_Period, 50,0,MODE_EMA,PRICE_CLOSE);

   ArraySetAsSeries(myMovingAverageArray1,true);
   ArraySetAsSeries(myMovingAverageArray2,true);

   CopyBuffer(movingAverageDefinition1,0,0,3,myMovingAverageArray1);
   CopyBuffer(movingAverageDefinition2,0,0,3,myMovingAverageArray2);

   if((myMovingAverageArray1[0]>myMovingAverageArray2[0])&&(myMovingAverageArray1[1]<myMovingAverageArray2[1]))
   {
      double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
      Comment ("BUY");

***********************************************************   
      trade.Buy(MyLotSize,NULL,Ask,0,(Ask+60 * _Point),NULL);
   }
   if((myMovingAverageArray1[0]<myMovingAverageArray2[0])&&(myMovingAverageArray1[1]>myMovingAverageArray2[1]))
   {
      double Bid=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
      Comment ("SELL");

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
      trade.Sell(MyLotSize,NULL,Bid,0,(Bid-60 * _Point),NULL);    
   }
}

【问题讨论】:

    标签: mql5


    【解决方案1】:

    试试下面的 -

    void TryToClose(long type){
       if(!PositionSelect(_Symbol))return;
       if(PositionGetInteger(POSITION_TYPE)!=type)return;
       trade.PositionClose(_Symbol);
    }
    
    add `TryToClose(POSITION_TYPE_BUY)` before opening a sell order.
    

    【讨论】:

    • 非常感谢。愿上帝保佑你
    • 我在 2019 年 2 月的回测策略中对其进行了测试,它获得了很多利润。但是当我去年尝试它时它以巨大的损失告终,当我去年每月尝试它时(即从一月到十二月一一选择并测试它)它显示出损失...... ..请您对这种情况说一下
    • 问题是什么?这是一个编程论坛,如果您对外汇和交易有任何疑问 - 您最好在一些有关交易的论坛上提问
    • 非常感谢您提供的代码。当我尝试你上面给出的代码时,它仍然没有关闭买入交易。请不要生气。
    • 这个功能怎么用?您需要计算与您拥有的信号相反的类型,例如如果你有POSITION_TYPE_BUY 信号,你需要先关闭POSITION_TYPE_SELL,对吧?它们相互关联为POSITION_TYPE_SELL=1-POSITION_TYPE_BUY,反之亦然。
    猜你喜欢
    • 1970-01-01
    • 2022-10-25
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    • 2018-06-12
    • 1970-01-01
    相关资源
    最近更新 更多