新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1657 1...165016511652165316541655165616571658165916601661166216631664...1953 新评论 Tretyakov Rostyslav 2021.10.09 14:44 #16561 artem artem #: 我附上了一张截图,如果你有什么不明白的,就问吧 这应该是可行的 #define MagicNumber 122122 extern string s1 = "Trading options"; extern double Lot = 0.01; // размер лота 0 - авт.расчет extern double StopLoss = 40; // стоплосс extern double TakeProfit = 10; // тейкпрофит extern double TrailStop = 21; // уровень без убытка extern int Trailing = 0; // трейлинг стоп 1 вкл. 0 выкл. extern int Breakeven = 0; // перенос стоп лосса в без убыток extern string s2 = "Day & Hour"; extern int HrStart = 0; // время начала торговли extern int HrEnd = 23; // время окончания торговли extern int Monday = 1; // Понедельник 1 вкд. 0 выкл. extern int Tuesday = 1; // Вторник extern int Wednesday = 1; // Среда extern int Thursday = 1; // Четверг extern int Friday = 1; // Пятница //+------------------------------------------------------------------+ // параметры индикаторов double MovingPeriodLw = 5; double MovingPeriodS1 = 75; double MovingPeriodS2 = 85; double StopLevel; double TrailStep = 3; // шаг трейлинг стопа bool OrderBuy = true, OrderSell = true, Order = false, Init = true; int timeprev = 0, Slip = 3.0; //+------------------------------------------------------------------+ //| Init function | //+------------------------------------------------------------------+ void OnInit() { if (Digits == 3 || Digits == 5) { // Пересчет для 5-ти знаков TakeProfit *= 10; TrailStop *= 10; TrailStep *= 10; StopLoss *=10; Slip *=10; } return; } //+------------------------------------------------------------------+ //| Start function | //+------------------------------------------------------------------+ void start() { StopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL); CheckForOpen(); // Определение направления пересечения мувингов if (Init) InitMetod(); // Трейлинг стоп открытых позиций if (Trailing != 0 ) RealTrailOrder(TrailStop, TrailStep, StopLevel, MagicNumber); // Ожидание нового бара на графике if(timeprev == Time[0]) return; timeprev = Time[0]; // Открытие ордера по методу Пуриа if(CheckForOpen()==0 && OrderBuy==true) // Если сигнал для покупок { if(OrderSend(Symbol(),OP_BUY,Lots(),Ask,Slip,Bid-StopLoss*Point,Ask+TakeProfit*Point,"",MagicNumber,0,Blue)) {OrderBuy=false; Print("BUY OK");} } if(CheckForOpen()==1 && OrderSell==true) // Если сигнал для продаж { if(OrderSend(Symbol(),OP_SELL,Lots(),Bid,Slip,Ask+StopLoss*Point,Bid-TakeProfit*Point,"",MagicNumber,0,Red)) {OrderSell=false; Print("SELL OK");} } } //+------------------------------------------------------------------+ //| Check for open order conditions | //+------------------------------------------------------------------+ int CheckForOpen() // Открытие ордера по методу Пуриа { double malw,mas1,mas2,macd; int res=-1, buy=0, sell=0; // Считывание параметров индикаторов 3 свечи (4ой) malw=iMA(NULL,0,MovingPeriodLw,0,MODE_EMA,PRICE_CLOSE,3); mas1=iMA(NULL,0,MovingPeriodS1,0,MODE_LWMA,PRICE_LOW,3); mas2=iMA(NULL,0,MovingPeriodS2,0,MODE_LWMA,PRICE_LOW,3); macd=iMACD(NULL,0,15,26,1,PRICE_CLOSE,MODE_MAIN,3); if(malw>mas1&&malw>mas2&&macd>0) {buy+=1; sell=0;} if(malw<mas1&&malw<mas2&&macd<0) {buy=0; sell+=1;} // Считывание параметров индикаторов 2 свечи (3ей) malw=iMA(NULL,0,MovingPeriodLw,0,MODE_EMA,PRICE_CLOSE,2); mas1=iMA(NULL,0,MovingPeriodS1,0,MODE_LWMA,PRICE_LOW,2); mas2=iMA(NULL,0,MovingPeriodS2,0,MODE_LWMA,PRICE_LOW,2); macd=iMACD(NULL,0,15,26,1,PRICE_CLOSE,MODE_MAIN,2); if(malw>mas1&&malw>mas2&&macd>0) {buy+=1; sell=0;} if(malw<mas1&&malw<mas2&&macd<0) {buy=0; sell+=1;} // Считывание параметров индикаторов 1 свечи (2ой) malw=iMA(NULL,0,MovingPeriodLw,0,MODE_EMA,PRICE_CLOSE,1); mas1=iMA(NULL,0,MovingPeriodS1,0,MODE_LWMA,PRICE_LOW,1); mas2=iMA(NULL,0,MovingPeriodS2,0,MODE_LWMA,PRICE_LOW,1); macd=iMACD(NULL,0,15,26,1,PRICE_CLOSE,MODE_MAIN,1); if(malw>mas1&&malw>mas2&&macd>0) {buy+=1; sell=0;} if(malw<mas1&&malw<mas2&&macd<0) {buy=0; sell+=1;} // Считывание параметров индикаторов 0 свечи (1ой) malw=iMA(NULL,0,MovingPeriodLw,0,MODE_EMA,PRICE_CLOSE,0); mas1=iMA(NULL,0,MovingPeriodS1,0,MODE_LWMA,PRICE_LOW,0); mas2=iMA(NULL,0,MovingPeriodS2,0,MODE_LWMA,PRICE_LOW,0); macd=iMACD(NULL,0,15,26,1,PRICE_CLOSE,MODE_MAIN,0); if(malw>mas1&&malw>mas2&&macd>0) {buy+=1; sell=0;} if(malw<mas1&&malw<mas2&&macd<0) {buy=0; sell+=1;} if(buy ==4) { res=0; OrderSell=true;} if(sell==4) { res=1; OrderBuy =true;} return(res); } Tretyakov Rostyslav 2021.10.09 14:49 #16562 artem artem #: 我附上了一张截图,如果你有什么不明白的,可以问我。 编译它,这样它就不会碍事了 if (Init) InitMetod(); SanAlex 2021.10.09 14:55 #16563 SanAlex #:试试这个--它能在这些地方打开吗? 这就是它的打开方式 - 它应该如何打开? Tretyakov Rostyslav 2021.10.09 15:00 #16564 SanAlex #:这就是它的打开方式 - 它应该如何打开? SanAlex 2021.10.09 15:18 #16565 MakarFX #: 这是它的打开方式--我已经在里面探查过了。 而这是你如何把上面的代码。 Artis98 2021.10.09 15:26 #16566 MakarFX,查了一下,买入和卖出时都有开盘,没有什么问题。但仍然没有对MACD 向相反方向交叉的反应,而快速仍然保持不变。因此,如果MACD回到快速并通过4根确认蜡烛,就没有订单进入。我在这封邮件中附上了一张截图,以明确我的意思 附加的文件: xn27e5bwg_ko_g547t6j.png 22 kb Tretyakov Rostyslav 2021.10.09 15:27 #16567 artem artem #: 附上一张截图,如果你有不明白的地方--请问 调整了一下 #define MagicNumber 122122 extern string s1 = "Trading options"; extern double Lot = 0.01; // размер лота 0 - авт.расчет extern double StopLoss = 40; // стоплосс extern double TakeProfit = 10; // тейкпрофит extern double TrailStop = 21; // уровень без убытка extern int Trailing = 0; // трейлинг стоп 1 вкл. 0 выкл. extern int Breakeven = 0; // перенос стоп лосса в без убыток extern string s2 = "Day & Hour"; extern int HrStart = 0; // время начала торговли extern int HrEnd = 23; // время окончания торговли extern int Monday = 1; // Понедельник 1 вкд. 0 выкл. extern int Tuesday = 1; // Вторник extern int Wednesday = 1; // Среда extern int Thursday = 1; // Четверг extern int Friday = 1; // Пятница //+------------------------------------------------------------------+ // параметры индикаторов double MovingPeriodLw = 5; double MovingPeriodS1 = 75; double MovingPeriodS2 = 85; double StopLevel; double TrailStep = 3; // шаг трейлинг стопа bool OrderBuy = true, OrderSell = true, Order = false, Init = true; int timeprev = 0, Slip = 3.0; //+------------------------------------------------------------------+ //| Init function | //+------------------------------------------------------------------+ void OnInit() { if (Digits == 3 || Digits == 5) { // Пересчет для 5-ти знаков TakeProfit *= 10; TrailStop *= 10; TrailStep *= 10; StopLoss *=10; Slip *=10; } return; } //+------------------------------------------------------------------+ //| Start function | //+------------------------------------------------------------------+ void start() { StopLevel = MarketInfo(Symbol(), MODE_STOPLEVEL); CheckForOpen(); // Определение направления пересечения мувингов // if (Init) InitMetod(); // Трейлинг стоп открытых позиций if (Trailing != 0 ) RealTrailOrder(TrailStop, TrailStep, StopLevel, MagicNumber); // Ожидание нового бара на графике if(timeprev == Time[0]) return; timeprev = Time[0]; // Открытие ордера по методу Пуриа if(CheckForOpen()==0 && OrderBuy==true) // Если сигнал для покупок { if(OrderSend(Symbol(),OP_BUY,Lots(),Ask,Slip,Bid-StopLoss*Point,Ask+TakeProfit*Point,"",MagicNumber,0,Blue)) {OrderBuy=false; Print("BUY OK");} } if(CheckForOpen()==1 && OrderSell==true) // Если сигнал для продаж { if(OrderSend(Symbol(),OP_SELL,Lots(),Bid,Slip,Ask+StopLoss*Point,Bid-TakeProfit*Point,"",MagicNumber,0,Red)) {OrderSell=false; Print("SELL OK");} } } //+------------------------------------------------------------------+ //| Check for open order conditions | //+------------------------------------------------------------------+ int CheckForOpen() // Открытие ордера по методу Пуриа { double malw,mas1,mas2,macd; int res=-1, buy=0, sell=0; // Считывание параметров индикаторов 3 свечи (4ой) malw=iMA(NULL,0,MovingPeriodLw,0,MODE_EMA,PRICE_CLOSE,3); mas1=iMA(NULL,0,MovingPeriodS1,0,MODE_LWMA,PRICE_LOW,3); mas2=iMA(NULL,0,MovingPeriodS2,0,MODE_LWMA,PRICE_LOW,3); macd=iMACD(NULL,0,15,26,1,PRICE_CLOSE,MODE_MAIN,3); if(malw>mas1&&malw>mas2&&macd>0) {buy+=1; sell=0;} if(malw<mas1&&malw<mas2&&macd<0) {buy=0; sell+=1;} // Считывание параметров индикаторов 2 свечи (3ей) malw=iMA(NULL,0,MovingPeriodLw,0,MODE_EMA,PRICE_CLOSE,2); mas1=iMA(NULL,0,MovingPeriodS1,0,MODE_LWMA,PRICE_LOW,2); mas2=iMA(NULL,0,MovingPeriodS2,0,MODE_LWMA,PRICE_LOW,2); macd=iMACD(NULL,0,15,26,1,PRICE_CLOSE,MODE_MAIN,2); if(malw>mas1&&malw>mas2&&macd>0) {buy+=1; sell=0;} if(malw<mas1&&malw<mas2&&macd<0) {buy=0; sell+=1;} // Считывание параметров индикаторов 1 свечи (2ой) malw=iMA(NULL,0,MovingPeriodLw,0,MODE_EMA,PRICE_CLOSE,1); mas1=iMA(NULL,0,MovingPeriodS1,0,MODE_LWMA,PRICE_LOW,1); mas2=iMA(NULL,0,MovingPeriodS2,0,MODE_LWMA,PRICE_LOW,1); macd=iMACD(NULL,0,15,26,1,PRICE_CLOSE,MODE_MAIN,1); if(malw>mas1&&malw>mas2&&macd>0) {buy+=1; sell=0;} if(malw<mas1&&malw<mas2&&macd<0) {buy=0; sell+=1;} // Считывание параметров индикаторов 0 свечи (1ой) malw=iMA(NULL,0,MovingPeriodLw,0,MODE_EMA,PRICE_CLOSE,0); mas1=iMA(NULL,0,MovingPeriodS1,0,MODE_LWMA,PRICE_LOW,0); mas2=iMA(NULL,0,MovingPeriodS2,0,MODE_LWMA,PRICE_LOW,0); macd=iMACD(NULL,0,15,26,1,PRICE_CLOSE,MODE_MAIN,0); if(malw>mas1&&malw>mas2&&macd>0) {buy+=1; sell=0;} if(malw<mas1&&malw<mas2&&macd<0) {buy=0; sell+=1;} if(buy <4) OrderBuy=true; if(sell<4) OrderSell=true; if(buy ==4) { res=0; OrderSell=true;} if(sell==4) { res=1; OrderBuy =true;} return(res); } SanAlex 2021.10.09 15:36 #16568 artem artem #: 这就是图片--右边的点? Artis98 2021.10.09 15:52 #16569 MakarFX,在您最后的编辑中,如果快线越过慢线,然后返回到MACD 所在的同一区域,那么订单将从第一根蜡烛开始打开。而且它必须被确认4次,订单应该在第四根蜡烛上打开。我附上了一个文件,以使其视觉上清晰。 SanAlex,你能不能放大一点,让MACD柱子清晰可见,以及一个人越过慢速柱子的速度是多少?我几乎看不到它。 附加的文件: l5yxb9evi_sm_c9ile85_2.png 44 kb Tretyakov Rostyslav 2021.10.09 16:00 #16570 artem artem MACD 所在的同一区域,那么订单将从第一根蜡烛开始打开。而且它必须被确认4次,订单应该在第四根蜡烛上打开。我附上了一个文件,以使其视觉上清晰。 SanAlex,你能放大看清楚MACD柱状图,以及快速柱状图与慢速柱状图的交叉情况吗?我几乎看不到它。 事实证明,当快线越过慢线时,牛市已经转换,下一个条形图上的信号重新计算当前的状态并打开交易 我明白这个问题,但我不知道如何解决它......。 1...165016511652165316541655165616571658165916601661166216631664...1953 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我附上了一张截图,如果你有什么不明白的,就问吧
这应该是可行的
我附上了一张截图,如果你有什么不明白的,可以问我。
编译它,这样它就不会碍事了
if (Init) InitMetod();
试试这个--它能在这些地方打开吗?
这就是它的打开方式 - 它应该如何打开?
这就是它的打开方式 - 它应该如何打开?
这是它的打开方式--我已经在里面探查过了。
而这是你如何把上面的代码。
附上一张截图,如果你有不明白的地方--请问
调整了一下
这就是图片--右边的点?
MakarFX,在您最后的编辑中,如果快线越过慢线,然后返回到MACD 所在的同一区域,那么订单将从第一根蜡烛开始打开。而且它必须被确认4次,订单应该在第四根蜡烛上打开。我附上了一个文件,以使其视觉上清晰。
SanAlex,你能不能放大一点,让MACD柱子清晰可见,以及一个人越过慢速柱子的速度是多少?我几乎看不到它。
SanAlex,你能放大看清楚MACD柱状图,以及快速柱状图与慢速柱状图的交叉情况吗?我几乎看不到它。
事实证明,当快线越过慢线时,牛市已经转换,下一个条形图上的信号重新计算当前的状态并打开交易
我明白这个问题,但我不知道如何解决它......。