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

 
VIREDS #:
所有mql4用户的好时光。我们有一个函数,它以牺牲任何方向的有利可图的头寸为代价,将一个系列中最远的亏损订单的部分按百分比关闭。我们需要帮助,以最终确定这一功能!也就是说,我们需要部分关闭系列中的所有剩余订单(由于任何方向的盈利头寸),而不是最长的那一个。提前感谢!
已经在这个功能上挣扎了大约2个月。有如此多的细微差别。特别是这句话
 ProfitPer=OrderProfit()+OrderCommission()+OrderSwap();//ПРОФИТ ОДНОГО ОРДЕРА

当网格中存在大量订单时,它在关闭时给出了一个总的损失,尽管它应该将所有的订单关闭在零点。我最终完全取消了佣金和互换。

double spreadLoss =(MarketInfo(_Symbol,MODE_TICKVALUE)* MarketInfo(_Symbol,MODE_SPREAD));
 
然后在函数中,你可以为每个订单乘以lot/lotstep,但我只是做了一个乘法器
 
而在OrderClose()之前,他们忘记了(!)
 
下午好。由于目前的情况,请您告知如何支付 MQL4服务的费用
 

大家下午好。我有一个指标,当信号出现时在图表上画一个箭头。事实证明,所有这些箭头都放在图表上的历史上,你可以评估信号的潜力。

图中的指示箭头。

我试图附加一个警报,以提示信号的发生。我在指标中发现了一个功能,当信号出现时,会画出箭头。

void SetDivergenceUP(string sy, int work_period, int wnd, string name_ind, string pattern, const datetime &time[], int index,
                     datetime left_time, double left_point, datetime time_b, double ind_b, 
                     datetime last_prc_tm, double last_prc_val, datetime time_extr, datetime &last_time_gv, double price_extr, double &Buffer[]) {
   double atr=iATR(sy,PERIOD_CURRENT,14,index);
   color line_color=clrNONE;
   string nm="", gv_name="";
   if(name_ind=="AO") {line_color=ColorUpperAO; gv_name=GV_nameCTS;}
   else if(name_ind=="MACD") {line_color=ColorUpperMACD; gv_name=GV_nameCTS;}
   else if(name_ind=="RSI") {line_color=ColorUpperRSI; gv_name=GV_nameCTS;}
   else {line_color=ColorUpperSTO; gv_name=GV_nameCTS;}
   //--- поставим сигнальную стрелку на график цены и запишем сигнал для CTS и его время
   //int bar_extr=Bars(sy,PERIOD_CURRENT,TimeCurrent(),time_extr);
   int bar_extr=GetBarShift(sy,PERIOD_CURRENT,time_extr);
   //Buffer[bar_extr]=GetPriceHigh(sy,Period(),bar_extr);
   Buffer[index]=GetPriceHigh(sy,Period(),index)+atr*shiftArrow;
   if(ModeSignalsCTS==enBoth || ModeSignalsCTS==enSell) {
      GlobalVariableSet(gv_name,-1.0);
      last_time_gv=time[index];
      }
   //--- соединим линией ближайшие точки экстремумов цены
   int last_bar_extr=Bars(sy,PERIOD_CURRENT,TimeCurrent(),last_prc_tm);
   nm=Prefix+"P"+name_ind+"divUpper"+TimeToString(time_b);
   SetTLine(0,nm,line_color,0,last_prc_tm,last_prc_val,time_extr,price_extr,widthChartLine,pattern+" "+name_ind+(work_period==Period()?"":"\nна периоде "+GetNameTF(work_period)));
   //--- если есть окно индикатора, соединим линией ближайшие точки экстремумов индикатора
   if(wnd>0) {
      nm=Prefix+name_ind+"divUpper"+TimeToString(time_b);
      SetTLine(0,nm,line_color,wnd,left_time,left_point,time_b,ind_b,widthIndicatorstLine,pattern+" "+(work_period==Period()?"":"\nна периоде "+GetNameTF(work_period)));
      }

}


我在这个函数的结尾处 添加了一行,以生成警报。我用颜色突出了添加的那一行;-)

void SetDivergenceUP(string sy, int work_period, int wnd, string name_ind, string pattern, const datetime &time[], int index,
                     datetime left_time, double left_point, datetime time_b, double ind_b, 
                     datetime last_prc_tm, double last_prc_val, datetime time_extr, datetime &last_time_gv, double price_extr, double &Buffer[]) {
   double atr=iATR(sy,PERIOD_CURRENT,14,index);
   color line_color=clrNONE;
   string nm="", gv_name="";
   if(name_ind=="AO") {line_color=ColorUpperAO; gv_name=GV_nameCTS;}
   else if(name_ind=="MACD") {line_color=ColorUpperMACD; gv_name=GV_nameCTS;}
   else if(name_ind=="RSI") {line_color=ColorUpperRSI; gv_name=GV_nameCTS;}
   else {line_color=ColorUpperSTO; gv_name=GV_nameCTS;}
   //--- поставим сигнальную стрелку на график цены и запишем сигнал для CTS и его время
   //int bar_extr=Bars(sy,PERIOD_CURRENT,TimeCurrent(),time_extr);
   int bar_extr=GetBarShift(sy,PERIOD_CURRENT,time_extr);
   //Buffer[bar_extr]=GetPriceHigh(sy,Period(),bar_extr);
   Buffer[index]=GetPriceHigh(sy,Period(),index)+atr*shiftArrow;
   if(ModeSignalsCTS==enBoth || ModeSignalsCTS==enSell) {
      GlobalVariableSet(gv_name,-1.0);
      last_time_gv=time[index];
      }
   //--- соединим линией ближайшие точки экстремумов цены
   int last_bar_extr=Bars(sy,PERIOD_CURRENT,TimeCurrent(),last_prc_tm);
   nm=Prefix+"P"+name_ind+"divUpper"+TimeToString(time_b);
   SetTLine(0,nm,line_color,0,last_prc_tm,last_prc_val,time_extr,price_extr,widthChartLine,pattern+" "+name_ind+(work_period==Period()?"":"\nна периоде "+GetNameTF(work_period)));
   //--- если есть окно индикатора, соединим линией ближайшие точки экстремумов индикатора
   if(wnd>0) {
      nm=Prefix+name_ind+"divUpper"+TimeToString(time_b);
      SetTLine(0,nm,line_color,wnd,left_time,left_point,time_b,ind_b,widthIndicatorstLine,pattern+" "+(work_period==Period()?"":"\nна периоде "+GetNameTF(work_period)));
      }
      Alert("ДИВЕРГЕНЦИЯ НА "+Symbol());
}

警报器正在工作,测试器中一切正常。但是,当我启动终端,如果图表上有一个指标,它发出的哔哔声和信息与历史上的箭头一样多J 我应该怎么做,如何使警报只在终端开启时收到最后一个信号时发出,而历史上的箭头是无声的?
 
DanilaMactep #:

大家下午好。我有一个指标,当信号出现时在图表上画一个箭头。事实证明,所有这些箭头都放在图表上的历史上,你可以评估信号的潜力。

我试图附加一个警报,以提示信号的发生。我在指标中发现了一个功能,当信号出现时,会画出箭头。


我在这个函数的结尾处 添加了一行,以生成警报。我用颜色突出了添加的那一行;-)

警报器正在工作,测试器中一切正常。但是,当我启动终端,如果图表上有一个指标,它产生的音频信号和信息与历史上的箭头一样多J 我应该怎么做,我应该如何使警报只在终端打开时的最后一个信号,而历史上的箭头是沉默的?
只在第一条或零条上发出警报。
 

同事们--组织问题。

我的电脑上C盘的空闲空间,我在MT4和MT5上测试和优化博览会的地方变得稀少......就像我的电脑上220个剩余的30GB......

我怀疑空间被机器人早期工作或正在测试的日志,以及不同终端和MT4和MT5上不同符号的历史记录所占用--我很感兴趣。

如何才能清除符号历史(按符号的刻度)和终端 在不同文件夹中的日志(总共不多,大约5个)。

有点像以前在MT 4上有一个神奇的文件clear.bat。

一般来说,需要选项来清除不同文件夹中的历史人物(他们的蜱虫)和日志下的空间。桌面上的所有快捷方式都是MT4和MT5。有点像。

一般来说,清除过去的测试(符号刻度历史)和交易(其日志)的磁盘空间。

至少在哪里可以读到如何清理和删除哪些文件夹,以及MT4和MT5 - 它们的位置...

Sps.

 

你能给我一个提示吗?

通过iCustom的专家顾问使用一个指标,但在每一个tick 上都有这样的错误记录。

能否在不编辑指标的情况下解决这个问题? 如果可以,如何解决?

 
ALEKSANDR SOKOLOV 每一个tick 上都有这样的错误记录。

能否在不编辑指标的情况下解决这个问题? 如果可以,如何解决?

如果与专家顾问分开运行的指标没有产生这样的记录,那么请检查在专家顾问中调用iCustom()时,指标参数是否被正确指定。

 
Roman Shiredchenko 终端 在不同文件夹中的日志(总共不多,约5个)。

有点像以前在MT 4上有一个神奇的文件clear.bat。

一般来说,需要选项来清除不同文件夹中的历史人物(他们的蜱虫)和日志下的空间。桌面上的所有快捷方式都是MT4和MT5。有点像。

一般来说,清除过去的测试(符号刻度历史)和交易(其日志)的磁盘空间。

至少在哪里可以读到如何清理和删除哪些文件夹,以及MT4和MT5 - 它们的位置...

谢谢。

这台电脑有多旧,什么时候清理过本地文件夹、临时文件夹和服务英特尔或其他制造商文件夹中的系统日志。在一台只有浏览器和办公室的10年老电脑上,它用管理员下面的sikliner取出了近100G。在我的英特尔文件夹中,我发现了25gb。

历史文件夹中的虱子。例如,从binans的所有字符中也有25GB。 而且共享和mcl文件夹中的日志也被检查出来。如果你拆掉原木,就不会影响任何东西。但是,如果你拿下了蜱虫,你可能要等待合适的蜱虫被加载。

原因: