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

 
законопослушный гражданин #:

升空

停机先是站立,然后瞬间飞向太空(途中关闭订单)。

按照我的理解,这不是问题的关键。

如果我说错了请纠正我: void OnTick()

如果没有未结订单并且有信号,那么vOrderOpenBuy() / vOrderOpenSell()

然后是 void vOrderModify(int iOTi) - 即他们设置停止和takei,然后检查是否有错误。

也就是说,在订单以止损或止盈收盘之前,是不可能在追踪方面进行修正的。

你需要一个(最多两个)多次的停顿和取舍。

如果你想改变追踪止损并获取利润,那么你应该手动操作。

我还在考虑如何实现它。

已更正

2021.12.24 21:31:12.245 2021.11.01 00:00:00  111 inputs: Lot=0.01; StopLoss=200; TakeProfit=400; Slippage=3; Magic=1; K_Martin1=2; K_Martin2=2; K_Martin3=2; OrdersClose=5; OrdersClose2=5; DigitsLot=2; PeriodMA=14; MovingShift=1; 
2021.12.24 21:31:12.292 2021.11.01 00:05:00  111 EURUSD,M5: open #1  buy 0.01 EURUSD at 1.15583 ok
2021.12.24 21:31:12.292 2021.11.01 00:05:00  111 EURUSD,M5: modify #1  buy 0.01 EURUSD at 1.15583 sl: 1.15383 tp: 1.15983 ok
2021.12.24 21:32:52.782 2021.11.01 17:37:18  111 EURUSD,M5: modify #1  buy 0.01 EURUSD at 1.15583 sl: 1.15403 tp: 1.16003 ok
2021.12.24 21:32:52.782 2021.11.01 17:37:18  111 EURUSD,M5: Модификации ордера на покупку успешна!
2021.12.24 21:33:39.178 2021.11.01 19:06:30  111 EURUSD,M5: modify #1  buy 0.01 EURUSD at 1.15583 sl: 1.15433 tp: 1.16013 ok
2021.12.24 21:33:39.178 2021.11.01 19:06:30  111 EURUSD,M5: Модификации ордера на покупку успешна!
2021.12.24 21:34:08.768 2021.11.01 20:12:05  Tester: take profit #1  at 1.16013 (1.16014 / 1.16019)
2021.12.24 21:34:14.632 2021.11.01 20:17:55  Tester: stop button pressed
附加的文件:
111.mq4  25 kb
 
законопослушный гражданин #:

升空

先是站立,然后立即飞向太空,接着是取货(在途中关闭订单)。

那是因为你的规则没有发挥作用。

关于交易、自动交易系统和交易策略测试的论坛。

新手对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论

Mihail Matkovskij, 2021.12.23 22:01

一般来说,规则如下。

  • 计算出的SL小于订单的SL(利润较低)--什么都不做。
  • 结算SL等于订单- 不做任何事情
  • 计算的SL超过订单的SL(更有利可图)--用计算值修改它
这些创建拖网的规则将适用于创建几乎任何具有任何SL计算算法的拖网。

他们会在很久以前就完成了,并且钉住了。但是没有...

我忍不住找到一个现成的例子:https://www.mql5.com/ru/code/30808

还有一篇文章:https://www.mql5.com/ru/articles/134

虽然这对初学者来说很复杂,但我认为如果你真的对这一主题感兴趣,你会处理好它。

Простой трейлинг-стоп
Простой трейлинг-стоп
  • www.mql5.com
Очень простой советник для сопровождения сделок трейлинг-стопом.
 
Tretyakov Rostyslav #:

已更正

谢谢你!

我不知道你可以把一个双数放在一个无效函数里面

 
Mihail Matkovskij #:

那是因为你的规则不起作用。

你应该在很久以前就这样做了,并取得了成绩。但是没有...

我受不了了,给你找了个现成的例子:https://www.mql5.com/ru/code/30808

还有一篇文章:https://www.mql5.com/ru/articles/134

对于初学者来说,这可能很复杂,但我认为如果你真的对这一主题感兴趣,你会理解它。

谢谢你

 

下午好!!!。

你能告诉我Hour()函数是返回格林威治最后已知的服务器时间的当前小时还是计算机上调用的当前时间 吗?

 
EVGENII SHELIPOV 当前时间 吗?

 
Tretyakov Rostyslav #:


问题的答案是什么?

 
EVGENII SHELIPOV #:

这个问题的答案是什么?

对不起,我以为你能读懂。


 
EVGENII SHELIPOV 当前时间?

又是谁告诉你服务器时间必须 是格林尼治标准时间?

 

用于mt4和mt5的功能 - 开始、停止和.....

//+------------------------------------------------------------------+
//|                                                   time Start.mq4 |
//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//--- input parameters
input datetime InpHoursFrom = D'1970.01.01 02:00'; // Start (Only time)
input datetime InpHoursTo   = D'1970.01.01 23:00'; // Stop (Only time)
input bool     InpClose     = true;                // Close Time
input datetime InpHoursTo1  = D'1970.01.01 23:00'; // Close (Only time)
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(TimeStartStop(InpHoursFrom,InpHoursTo))
     {
      Print("Start time :",InpHoursFrom," || ","Stop time :",InpHoursTo);
     }
   if(TimeClose(InpHoursTo1))
     {
      if(InpClose)
         Print("close_time :",InpHoursTo1);
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
bool TimeStartStop(datetime HoursFrom,datetime HoursTo)
  {
//---
   MqlDateTime currTime;
   TimeToStruct(TimeLocal(),currTime);
   long hour0=currTime.hour*60*60+currTime.min*60+currTime.sec;
   if((HoursFrom<HoursTo && hour0>=HoursFrom && hour0<HoursTo) ||
      (HoursFrom>HoursTo && (hour0<HoursTo || hour0>=HoursFrom)))
      return(true);
   return(false);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
bool TimeClose(datetime HoursTo)
  {
//---
   MqlDateTime currTime;
   TimeToStruct(TimeLocal(),currTime);
   long hour0=currTime.hour*60*60+currTime.min*60+currTime.sec;
   if(hour0<HoursTo)
      return(false);
   if(hour0>HoursTo+1*10)
      return(false);
   return(true);
  }
//+------------------------------------------------------------------+