MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1657 1...165016511652165316541655165616571658165916601661166216631664...1953 新しいコメント Tretyakov Rostyslav 2021.10.09 16: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 16:49 #16562 artem artem #: スクリーンショットを添付しましたので、わからないことがあれば聞いてください。 邪魔にならないようにコンパイルする if (Init) InitMetod(); 削除済み 2021.10.09 16:55 #16563 SanAlex #:これを試してみてください - そういう場所でも開くのでしょうか? それが、どのように開くか--。 Tretyakov Rostyslav 2021.10.09 17:00 #16564 SanAlex #:それが、どのように開くか--。 削除済み 2021.10.09 17:18 #16565 MakarFX #: こんな風に開くんだ~と、つっこんでしまいました。 と、このように上のコードを入れるのです。 Artis98 2021.10.09 17:26 #16566 MakarFX、調べたら、買いでも売りでも開く、何も問題ない。しかし、まだMACDが 反対側にクロスすることに反応せず、速度は変わらないままです。その結果、MACDが高速に戻り、4本の確認ローソク足を通過した場合、注文の入力はありません。このメッセージには、私が言いたいことを明確にするために、スクリーンショットを添付しました。 ファイル: xn27e5bwg_ko_g547t6j.png 22 kb Tretyakov Rostyslav 2021.10.09 17: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); } 削除済み 2021.10.09 17:36 #16568 artem artem #: そして、これがその写真。右のドット? Artis98 2021.10.09 17:52 #16569 MakarFX さん、前回の編集で、速いローソクが遅いローソクを越えて、MACDの ある同じゾーンに戻った場合、1本目から注文を出します。そして、それは4回確認されなければならず、注文は4番目のローソク足で開く必要があります。視覚的にわかりやすいようにファイルを添付してみました。 MACDのバーがはっきり見えるようにズームインして、スローのバーをどの程度のスピードで交差させるかを教えてください。ほとんど見えません。 ファイル: l5yxb9evi_sm_c9ile85_2.png 44 kb Tretyakov Rostyslav 2021.10.09 18:00 #16570 artem artem MACDの ある同じゾーンに戻った場合、1本目から注文を出します。そして、それは4回確認されなければならず、注文は4番目のローソク足で開く必要があります。視覚的にわかりやすいようにファイルを添付してみました。 MACDのバーがはっきり見えるようにズームインして、スローのバーをどの程度のスピードで交差させるかを教えてください。ほとんど見えません。 速いものが遅いものを横切ったときに雄牛が入れ替わったことがわかり、次のバーのシグナルが現在の状態を再計算してトレードを開始する 問題は分かったが、どうすれば解決できるのか分からない...。 1...165016511652165316541655165616571658165916601661166216631664...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
スクリーンショットを添付しましたので、わからないことがありましたら、ご質問ください。
これは動作するはずです
スクリーンショットを添付しましたので、わからないことがあれば聞いてください。
邪魔にならないようにコンパイルする
if (Init) InitMetod();これを試してみてください - そういう場所でも開くのでしょうか?
それが、どのように開くか--。
それが、どのように開くか--。
こんな風に開くんだ~と、つっこんでしまいました。
と、このように上のコードを入れるのです。
スクリーンショットを添付しましたので、わからないことがあればご質問ください。
少し手を加えた
そして、これがその写真。右のドット?
MakarFX さん、前回の編集で、速いローソクが遅いローソクを越えて、MACDの ある同じゾーンに戻った場合、1本目から注文を出します。そして、それは4回確認されなければならず、注文は4番目のローソク足で開く必要があります。視覚的にわかりやすいようにファイルを添付してみました。
MACDのバーがはっきり見えるようにズームインして、スローのバーをどの程度のスピードで交差させるかを教えてください。ほとんど見えません。
MACDのバーがはっきり見えるようにズームインして、スローのバーをどの程度のスピードで交差させるかを教えてください。ほとんど見えません。
速いものが遅いものを横切ったときに雄牛が入れ替わったことがわかり、次のバーのシグナルが現在の状態を再計算してトレードを開始する
問題は分かったが、どうすれば解決できるのか分からない...。