以10个点的差距开立订单 - 页 3

 
    &&  OrderMagicNumber()  == 0           // my magic number

0是默认的神奇数字,所以你的条件不会排除任何手动开启的交易。

         Tip   =OrderType();                    // Type of selected order
         Price =OrderOpenPrice();               // Price of selected order
         SL    =OrderStopLoss();                // SL of selected order 
         TP    =OrderTakeProfit();               // TP of selected order
         Lot   =OrderLots();                     // Amount of lots

这里你存储的是最后选择的订单 的值。如果你想存储lastTicket 的值,你需要重新选择它。

你为什么要在订单中循环寻找最后一个订单,而对结果不做任何处理?

你的两个代码块是完全独立的

 
GumRai:

0是默认的神奇数字,所以你的条件不会排除任何手动开启的交易。

这里你存储的是最后选择的订单的值。如果你想存储最后一单 的值,你需要重新选择它。

你为什么要在订单中循环寻找最后一个订单,而对结果不做任何处理?

你的两个代码块是完全独立的




GumRai:谢谢你的回答,根据你的提示

OrderMagicNumber() == 0 ------------here put it 0 because I was testing my code so I posted it without the value number, thanks for the recommendations and corrections

OrderMagicNumber() == 1234

LastTicket 我把它放在我的订单结束时


lastTicket=OrderSend(Symbol(),OP_BUY,mylot(),Ask,0,0,0, "My Comment",magic,0,Green)。

如果(lastTicket>0)
{
bool b=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+(StopLoss*Point),Digits),NormalizeDouble(Ask-(TakeProfit*Point),Digits),0,Red)
}



但我不知道我是否真的做对了,因为我想让我的EA做的是下多个卖出订单类型,所以我想让EA在当前图表符号中获得最高开盘价,并在它上面开10个点,任何低于当前最后订单的 交易都被拒绝

因此,为了得到我想要的东西,我一步一步来。首先,我尝试先得到最后的开盘价,按照WHRoeder给我的方法。

因此,我的循环订单不只是设置一个开放的交易,而是多个开放的交易,这就是为什么我想获得最后一个开放的票高。



// Orders accounting 

{
     datetime lastTime  = 0;
    int      lastTicket = -1; // None open.
    for(int pos = OrdersTotal()-1; pos >= 0 ; pos--) if (
        OrderSelect(0, SELECT_BY_POS,MODE_TRADES)                 // Only my orders w/
    &&  OrderMagicNumber()  == 0           // my magic number
    &&  OrderSymbol()       == Symbol()                 // and my pair.
    &&  OrderOpenTime()     >=  lastTime
    &&  OrderTicket()       >   lastTicket
    ){
      lastTime   = OrderOpenTime();
      lastTicket = OrderTicket();
    }
 
}

         Tip   =OrderType();                    // Type of selected order
         Price =OrderOpenPrice();               // Price of selected order
         SL    =OrderStopLoss();                // SL of selected order 
         TP    =OrderTakeProfit();               // TP of selected order
         Lot   =OrderLots();                     // Amount of lots
   
////////////////////////////////////////////////////////////////////////////////////////////////////////
//---------------------------------------- 5 ------------------------------------//
/*this is the poinnt where main formular or trading system EA-MA is based*/
//---------------------------------------------------------------------------
// Trading criteria
       
rsi1=iRSI(NULL,0,14,PRICE_CLOSE,1);
rsi2=iRSI(NULL,0,14,PRICE_CLOSE,0); 
     
 if(rsi2>70 && Ask > High[1] + (10*pips2dbl) )
  {
      Opn_S=true;
     } 
     else 
   if(rsi2>70 && Ask < High[1] + (10*pips2dbl)) 
      {
      Opn_S=false;
     }


lastTicket=OrderSend(Symbol(),OP_BUY,mylot(),Ask,0,0,0,"My Comment",magic,0,Green);

         if(lastTicket>0)
     {
      bool b=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+(StopLoss*Point),Digits),
                         NormalizeDouble(Ask-(TakeProfit*Point),Digits),0,Red);
     }
 

请尽量不要在你的文章中加入长行的代码,这样会使文章难以阅读。

   if(lastTicket>0)
     {
      bool b=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+(StopLoss*Point),Digits),
                         NormalizeDouble(Ask-(TakeProfit*Point),Digits),0,Red);
     }

没有什么可以阻止你使用上述的两行代码

 
dan100:

WHRoeder这个代码是所有在我的订单执行的计算,我要求帮助我修改我的错误,并把我通过。



dan100:

WHRoeder这段代码在我的订单执行计算中,请我帮助我修改我的错误,并让我通过。






GumRai 谢谢你的指正。但我的上述代码是否正确?

 
dan100: 请仍然等待你的帮助。WHRoeder
你将会等待很长时间。
  1. 告诉你 你需要做什么,你没有做。
  2. 在这里提醒过你,你还是没有。
  3. 现在你又问,但 还是 没有做。
 
WHRoeder:
dan100: 请仍然等待您的帮助。WHRoeder
你将会等待很长时间。
  1. 告诉你 你需要做什么,你没有做。
  2. 在这里提醒过你,你还是没有。
  3. 现在你又问了一遍,但 还是 没有做。



WHRoeder 我不明白了,这是我的EA的整个逻辑部分,也是我的代码知识目前的位置。我不知道再提出什么,毕竟

但如果你能允许我把整个EA的代码发给你,我会很高兴的,请WHRoeder帮助我,我知道你能做到。

的批准和链接来发送整个EA代码。


此外,在你给我这个公式之前,正式......

  1. 找到开盘价最高的交易。
  2. 如果市场没有达到该价格+10点,返回
  3. 打开一个新的订单。


我只测试了最后的价格,只测试了移动平均线穿越ASK价格或BID价格,后来我发现它有时会在当前图表的高价位下开单,所以这就是我想纠正的地方。

我没有测试高价的代码,只有MA和Ask以及10点,所以我在测试中没有使用代码。

 
dan100:

GumRai 谢谢你的纠正。但我的上述代码是否正确?

首先,不清楚你想做什么

你说

"但我不知道我是否真的得到了它,因为我想让我的EA做的是放置多个卖出订单类型,所以我想让EA得到当前图表符号中的最高开盘价,并在它上面开10个点,任何低于当前最后订单的交易都会被拒绝。

所以为了得到我想要的东西,我一步一步来。首先,我尝试得到最后的开盘价,按照WHRoeder给我的方法。"

那么,你想找到什么呢?

最高开盘价的订单?

还是

最近打开的订单?

当你无法描述你想要什么的时候,别人怎么能帮助你呢?

     datetime lastTime  = 0;
    int      lastTicket = -1; // None open.
    for(int pos = OrdersTotal()-1; pos >= 0 ; pos--) if (
        OrderSelect(0, SELECT_BY_POS,MODE_TRADES)                 // Only my orders w/
    &&  OrderMagicNumber()  == 0           // my magic number
    &&  OrderSymbol()       == Symbol()                 // and my pair.
    &&  OrderOpenTime()     >=  lastTime
    &&  OrderTicket()       >   lastTicket
    ){
      lastTime   = OrderOpenTime();
      lastTicket = OrderTicket();
    }

这段代码找到了最后打开的订单,但它没有把价格存储在任何地方

      
rsi1=iRSI(NULL,0,14,PRICE_CLOSE,1);
rsi2=iRSI(NULL,0,14,PRICE_CLOSE,0); 
     
 if(rsi2>70 && Ask > High[1] + (10*pips2dbl) )
  {
      Opn_S=true;
     } 
     else 
   if(rsi2>70 && Ask < High[1] + (10*pips2dbl)) 
      {
      Opn_S=false;
     }

这里你给了Opn_S一个值,但你什么也没做。

   lastTicket=OrderSend(Symbol(),OP_BUY,mylot(),Ask,0,0,0,"My Comment",magic,0,Green);

这里没有开单的条件,你改写了lastTicket的值。

你的代码没有逻辑,只有3段完全不相关的代码。

 
GumRai 再次感谢您的指示和总结。我想找到的是

在当前图表符号中的最高开盘价 ,如果是买入,在其上方开10个点,如果是卖出,在其下方开10个点

请帮助我解决这个问题

 
dan100:
GumRai 再次感谢你的指示和总结。我想找到的是

当前图表符号中的最高开盘价

请帮我解决这个问题

为什么你需要帮助?

如果你能写代码找到具有最新(最高)OrderOpenTime的订单,那么找到具有最高OrderOpenPrice的订单应该是很简单的事情。

这只是简单的替换。

 
GumRai:

为什么你需要帮助?

如果你能写代码找到具有最新(最高)订单开放时间的订单,那么找到具有最高订单开放价格的订单应该是一件很简单的事情。

这只是简单的替换。



是的,我写了我的代码,有些是我研究的,但当我没有看到想要的结果时,我就会寻找解决方案,尽管我知道我已经完成了一半的错误。

有时,不管它们有多简单或多小,都很难解决。请GumRai帮助我,我将不胜感激。

原因: