新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1735

 
anrei2002 #:

关键字是 "帮助"!

正如我以前写的那样:你最好马上告诉我,这个指标不能在这个论坛上最终确定!你的意思是说,这个指标是不可能的。

就这样......我就明白....,为什么会有这么多的矿渣倒出来??

当初是我写的。

你不能修复它,它是弯曲的......

这是我写的第一件事。你没有看到它,你没有意识到它,你认为它是胡说八道。

你认为我试图向你传达的事实是你在这里搅乱的垃圾--我没有被冒犯,我没有为了你而努力,别人会读到它,不会犯错。至于你,祝你的指标好运,如果你不喜欢这个论坛,就去找其他论坛。

 
Nikolay Ivanov #:

我马上就写了。

没有办法修复它,它是歪的......

它可以被修复,但它会重新绘制最外层的8个条形图。

 
anrei2002 #:

关键字是 "帮助"!

我帮助了你--我写下了你需要做的事情--然后呢?)

你做了什么?

 
Taras Slobodyanik #:

它可以被修复,但它会重新绘制最外面的8个柱子。

还有人说,信号可以立即应用于第9条,根本不会有重划的情况。

Taras Slobodyanik#:

我已经帮助了你--我已经写了你需要做的事情--而且?)

你做了什么?

顺便说一下,你会得到(有一定的概率)套利,你需要事先同意他需要做的一切 - 你不能没有保留地做。

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2021.11.09
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 
Nikolay Ivanov #:

也有人说,你可以在第9条发出信号,根本不会有过高的价格......但这个人不明白......。

顺便说一下,你会得到套利,你必须事先谈判一切......他需要的东西不能没有保留。

这里一切都可以做,这个人同意重写,并发出8条信号,有什么问题呢?

ps. 分歧和分形也出现在过去,没什么大不了的。
 
Taras Slobodyanik #:

这里一切都可以做,当事人同意重新评级,信号8条回来,有什么问题?

他需要 "仅仅 "删除多余的箭头,就可以了。而如何做到这一点,通过重新评级或不评级,是你的问题...任何仲裁都是这样开始的 :)

这取决于你如何制定职权范围,但在任何情况下--我都不会冒这个险......。即使是成功的仲裁也是几个月的压力...

 
anrei2002 #:

关键字是 "帮助"!

正如我以前写过的:你最好马上告诉我,这个指标不能在这个论坛上最终确定!你的意思是说,这个指标不能在这个论坛上最终确定。

就这样......我就明白....,为什么会有这么多的矿渣倒出来??

正是如此。如果你帮助做,就意味着你做,有人帮助你,你能做多少就做多少,能做多少就做多少。

如果你所做的只是要求,没有做其他事情,而有人为你做,那么这就是一个善意的局。

当我创建这个主题时,我的意思是帮助,而不是免费许愿。

 

亲爱的论坛用户和有经验的程序员,你们好我需要帮助来确定EA))。请告知如何在代码顾问中添加2个东西。

1.情况是这样的:我开了一个订单(第一笔),有TP和SL,有一定的手数(可能是0.01)。如果这个订单在获利时关闭 - 很好,没有任何变化。但是,如果这个(第一笔)订单在SL平仓,紧接着的下一笔订单(第二笔)会以2倍的手数(0.01*2=0.02)开仓。如果第二笔订单在止盈点平仓,那么下一笔订单(第三笔)将以普通手数开仓,即在前一笔(第一笔)在止盈点平仓后,下一笔订单(第二笔)只需要2倍的手数。如果第3笔订单连续第二次在SL中被关闭,手数将继续增加2倍,直到没有TP关闭。我希望我已经详细描述了需要添加的逻辑。


现在让我用一个例子来解释:假设我们有一个基本参数为T.p.+300,S.l.的订单,我们必须增加SL运动。- 500.价格向要求的方向移动,并从订单的开盘价中通过+100点。一旦价格从订单的开盘价达到+100,SL应该从基础的-500移动到+90。即:当价格达到与订单开盘价相比+100点时,我们通过设置S,L为+90点将订单转移到盈亏平衡点。之后,如果价格进一步向所需的方向移动并通过另一个+50点--S.L.被移动了50点=>它现在应该是在订单开盘价的+140点。即S.L.首先从它的基本位置移动到离订单开盘价+90点的位置,然后再移动,如果它通过了+50点(- 500 => + 90 => + 140 => + 190等)。如此这般,直到价格达到T.P。或当趋势反转并冲击S.L.时。


我希望我详细地描述了一切,我真的希望得到你的帮助,因为通过添加这些缺失的元素,专家顾问就可以准备好了))。如果你有任何问题,请问))))。我在下面粘贴了专家顾问的部分代码。

extern string s1                = "Main options";
extern string Symbol            = "";     
extern int timeframe            = 30;     
extern int MagicNumber          = 122122; 
//+------------------------------------------------------------------+
extern string s2                = "Trading options";
extern int BarsForConfirm       = 40;     
extern double Lot               = 0.01;      // размер лота: 0 - авт.расчет (свободная маржа/9000 => 100/5000=0.02 лота); любое другое число - фиксированный лот
extern int StopLoss             = 50;     // стоплосс (в пунктах)
extern int TakeProfit           = 30;     // тейкпрофит (в пунктах)
//+------------------------------------------------------------------+

bool OrderBuy = true, OrderSell = true, Trade = false;  
int timeprev = 0, Slip = 3.0, Start, cnt=1, a;  
datetime newbar=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   if(CheckForOpen()==0) {a=1; Trade = false;}
   else
   if(CheckForOpen()==1) {a=0; Trade = false;}
   else {Trade = true;}
   if (Digits == 3 || Digits == 5) // Пересчет для 5-ти знаков, работает автоматически
     {                                                    
      TakeProfit *= 10;
      StopLoss *=10;
      Slip *=10;
     } 
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  
  {
  
   if(CheckForOpen()==a) Trade = true;
   if(newbar!=Time[0] && Trade==true)  
     {
      if(CheckForOpen()!=Start)        
        {Start=CheckForOpen(); cnt=1;}
      else {cnt+=1;}

      if(cnt==BarsForConfirm) {        
             
                
             
         if(CheckForOpen()==0)         
           {
            if(OrderSend(Symbol(),OP_BUY,Lots(),Ask,Slip,Bid-StopLoss*Point,Ask+TakeProfit*Point,"",MagicNumber,0,Blue))
              {Print("BUY OK");} else {Print(GetLastError());}
           } 
         if(CheckForOpen()==1)         
           {
            if(OrderSend(Symbol(),OP_SELL,Lots(),Bid,Slip,Ask+StopLoss*Point,Bid-TakeProfit*Point,"",MagicNumber,0,Red))
              {Print("SELL OK");} else {Print(GetLastError());}
           }
        }   
      newbar=Time[0];  //открытие ордера на цене открытия свечи
     }
  }
//+------------------------------------------------------------------+
//| Calculate optimal lot size                                       |
//+------------------------------------------------------------------+
double Lots()  // Расчет объема лота
  {
   double Lots;
   if(Lot>0) return(Lot);           
   Lots=AccountFreeMargin()/9000;  // раcчёт лота - свободная маржа/9000 => 100/9000=0.01 лота 
   Lots=MathMin(15,MathMax(0.01,Lots));
   if(Lots<0.1) Lots=NormalizeDouble(Lots,2);
   else 
     {
      if(Lots<1) Lots=NormalizeDouble(Lots,1);
      else       Lots=NormalizeDouble(Lots,0);
     }
   return(Lots);
  }
//+------------------------------------------------------------------+
 
MakarFX #:

接住

非常感谢你。对不起,我没有直接回复--分心了。
试了一下,发现一个小问题......
只有当我在USDX符号上运行时,它才会画出来。
它在欧元兑美元上没有显示(很明显,我正在改变Symbol_2)。
请看图片,可能更容易理解。
是否知道为什么会这样,如何解决?
附加的文件:
EURUSD.JPG  260 kb
USDX.JPG  318 kb
 

你好。

对不起,我的问题很愚蠢...现在订单正常下达,然后错误129--错误的价格。越来越麻烦了......。帮帮我吧...((


int f = OrderSend(para_2,OP_BUY,0.)1,Ask_para_2,3,0,0,",0,Blue); if(f < 0){Alert("Error setting Buy Stop order: " , GetLastError(); }

原因: