[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 478

 
abolk:

链接https://www.mql5.com/ru/code 有一仓库的类似产品

你给了一个链接到整个巨大的部分))))。

真有趣

 

下午好!

我需要的是,在成就+20点时,订单的SL被重新安排在开盘价格 上,即函数给出了77

 for(i=(OrdersTotal()-1); i>=0; i--) // перебор ордеров 
         { 
       if (!OrderSelect(i, SELECT_BY_POS))
      {
         continue;
      }

      if (OrderSymbol()!=Instr||OrderMagicNumber()!=MN)
          continue;
      if(OrderStopLoss()==OrderOpenPrice())
            break;    
       if (   OrderProfit()>=(MarketInfo(Symbol(),MODE_TICKVALUE)*Bezub)        ) 
   return(77);
                  
           }
   

我不能让它发挥作用。

 
demlin:

我需要订单的SL在达到+20点时被重新设置为开盘价,即函数显示77

20 p不是这样计算的,你必须使用OrderOpenPrice()函数,并与当前价格进行比较,也就是说,当订单达到正数或零利润时,你可能希望结果是77,即

for(i=(OrdersTotal()-1); i>=0; i--) // перебор ордеров 
         { 
            if (!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) continue;
            if (OrderSymbol()!=Instr||OrderMagicNumber()!=MN)  continue;
            if(OrderStopLoss()==OrderOpenPrice()) break;    
            if ( OrderProfit()>=0)) return(77);
           }
OrderProfit()函数返回存款货币 的订单利润,而不是点值
 
你能告诉我,一个EA是否有可能从另一个指标获得指标数据(从那些允许这样做的指标)。我还没有在价格类型中发现这样的机会。
 
IgorM:

20p不是这样计算的,你必须使用OrderOpenPrice()函数,并与当前价格进行比较,显然你希望当订单达到正数或零利润时返回77号结果,那么它看起来像这样。

OrderProfit()函数返回存款货币的订单利润,而不是点值

我大致是这么想的,我不计算20个点。 它们是在Bezub变量中设置的。我试着比较存款货币 订单的当前利润(OrderProfit())和所需的20点存款货币((MarketInfo(Symbol (),MODE_TICKVALUE)*Bezub)。
 
demlin:
这和我想的差不多,我没有计算20P,它们被设置在Bezub变量中。我试着比较当前存款货币的订单利润(OrderProfit())和要求的存款货币20P的水平((MarketInfo(Symbol (),MODE_TICKVALUE)*Bezub)。

那么你就忘了考虑当前的价格以及自下单以来价格已经移动了多少个点。

(OrderOpenPrice() -Bid)*MarketInfo(Symbol(),MODE_TICKVALUE) *Bezub

ZZZEROXXX:
请告知我是否可以从另一个指标中获得指标数据(允许的那些)。我在价格类型中没有发现这样的机会。

iCustom()

https://book.mql4.com/ru/samples/shared
 
IgorM:

那么你就忘了考虑当前的价格以及自下单以来价格已经移动了多少个点。

(OrderOpenPrice() -Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*Bezub


试过你的方案。警报给出的(OrderOpenPrice() -Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*Bezub值为-0.033。虽然有21便士的利润 !这是否正常?
 
demlin:
测试了你的计划。(OrderOpenPrice() -Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*Bezub值-0.033时产生警报。虽然,有21便士的利润!这是否正常?

对不起,我没有检查就写了,我这里搞错了,应该是这样的。

卖出:(OrderOpenPrice()-Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*lot/Point

买入: (Ask-OrderOpenPrice())*MarketInfo(Symbol(),MODE_TICKVALUE)*lot/Point

 
IgorM:

对不起,我没有检查就写了,我这里搞错了,应该是这样的。

卖出:(OrderOpenPrice()-Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*lot/Point

买入: (Ask-OrderOpenPrice())*MarketInfo(Symbol(),MODE_TICKVALUE)*lot/Point

这也还不是漂亮的数字。我不认为这与配方有关。(MarketInfo(Symbol (),MODE_TICKVALUE)*Bezub)表达式本身基本上给出了欧元的20 关键是在for循环的某个地方
 
IgorM:

对不起,我没有检查就写了,我这里搞错了,应该是这样的。

卖出:(OrderOpenPrice()-Bid)*MarketInfo(Symbol(),MODE_TICKVALUE)*lot/Point

买入: (Ask-OrderOpenPrice())*MarketInfo(Symbol(),MODE_TICKVALUE)*lot/Point

这也还不是漂亮的数字。我不认为这与配方有关。(MarketInfo(Symbol (),MODE_TICKVALUE)*Bezub)表达式本身基本上给出了EURUSD的20 它在for循环的某个地方