エキスパート: エキスパート一目(均衡表) - ページ 2 123 新しいコメント amin ghanbari 2021.10.08 12:51 #11 Vladimir Karputov #:コードデバッグを有効にし、ステップバイステップでテストします。 ご回答ありがとうございます。 デバッグを行い、高スプレッドによる誤ったSLがこの問題を引き起こしていることがわかりました。 Vladimir Karputov 2021.10.08 12:54 #12 amin ghanbari # :ご回答ありがとう。デバッグをしてみたところ、高スプレッドによる誤ったSLがこの問題を引き起こしていることがわかりました。 Expert Advisor内のコードは正しいのですが、ポジションを置いた瞬間に価格が強く動いた場合、ポジションはオープンされません。 amin ghanbari 2021.10.10 21:59 #13 Vladimir Karputov #:Expert Advisor内のコードは正しいのですが、ポジションを置いた瞬間に価格が強く動いた場合、ポジションはオープンされません。 この部分はcrypo用に修正すべきだと思います: //--- 3桁または5桁のチューニング int digits_adjust=1; if(m_symbol.Digits()==3 || m_symbol.Digits()==5) digits_adjust=10; m_adjusted_point=m_symbol.Point()*digits_adjust; ExtStopLoss = InpStopLoss * m_adjusted_point; ExtTakeProfit = InpTakeProfit * m_adjusted_point; ExtTrailingStop= InpTrailingStop * m_adjusted_point; ExtTrailingStep= InpTrailingStep * m_adjusted_point; ロットの決定にRISKを使用するとgetpointerエラーが表示され、fix LOTを使用しなければならない: //+------------------------------------------------------------------+ //| フリー・マージンからの取引に対するロットまたはリスクのパーセンテージ。 //+------------------------------------------------------------------+ bool LotsOrRisk(const double lots,const double risk,const int digits_adjust) { if(lots<0.0 && risk<0.0) { Print(__FUNCTION__,", ERROR: Parameter (\"lots\" or \"risk\") can't be less than zero"); return(false); } if(lots==0.0 && risk==0.0) { Print(__FUNCTION__,", ERROR: Trade is impossible: You have set \"lots\" == 0.0 and \"risk\" == 0.0"); return(false); } if(lots>0.0 && risk>0.0) { Print(__FUNCTION__,", ERROR: Trade is impossible: You have set \"lots\" > 0.0 and \"risk\" > 0.0"); return(false); } if(lots>0.0) { string err_text=""; if(!CheckVolumeValue(lots,err_text)) { Print(__FUNCTION__,", ERROR: ",err_text); return(false); } } else if(risk>0.0) { if(m_money!=NULL) delete m_money; m_money=new CMoneyFixedMargin; if(m_money!=NULL) { if(!m_money.Init(GetPointer(m_symbol),Period(),m_symbol.Point()*digits_adjust)) return(false); m_money.Percent(risk); } else { Print(__FUNCTION__,", ERROR: Object CMoneyFixedMargin is NULL"); return(false); } } //--- return(true); } //+------------------------------------------------------------------+ Vladimir Karputov 2021.10.11 04:47 #14 amin ghanbari # :***RISKを使ってロットを決定すると、getpointerエラーが表示され、fix LOTを使わなければなりません: あなたは自分の間違いに気づきました。 Vladimir Karputov 2021.10.11 04:53 #15 注意:スプレッドの大きい商品を使用する場合は、適切なストップロスを 設定する必要があります。 常に覚えておいてください:アスクとビッドです。 amin ghanbari 2021.10.11 23:57 #16 Vladimir Karputov #:あなたは自分のミスに気づいた。 ご回答ありがとうございます。エキスパートではすべて正しいのですが、問題は残高不足とスプレッドの抱き合わせによる誤ったSL です。 レバレッジを100に設定しました。このようなエラーが表示されます: OpenBuy, ERROR: メソッド CheckOpenLong OpenSell, ERROR: メソッド CheckOpenShort これは、BTCの最小ロットサイズでポジションを建てるには、この残高では不十分だということですか? それは本当ですか? Vladimir Karputov 2021.10.12 04:31 #17 amin ghanbari # :ご回答ありがとうございます。エキスパートではすべてのことが正しいのですが、問題は残高 不足と ハグ・スプレッドによる誤ったSLによる ものです。私は500$の残高に1%のリスクを設定し、レバレッジを100に設定しました:OpenBuy, ERROR: メソッド CheckOpenLong OpenSell, ERROR: メソッド CheckOpenShortこの残高は、BTCの最小ロットサイズでポジションを建てるのに十分ではないということですか?それは本当ですか? あなたは間違いを発見しました。どうすれば間違いを正せるか考えてみてください。 Mahmoud Ahmed Mahmoud Fahmy 2021.10.14 16:00 #18 こんにちは、ウラジミール 専門家を教えていただきありがとうございます。バーのクローズが雲を通過したときにポジションを閉じる条件を追加しようとしています。 Vladimir Karputov 2021.10.14 17:39 #19 Mahmoud Ahmed Mahmoud Fahmy # :こんにちは、ウラジーミル専門家を教えていただきありがとうございます。バーのクローズが雲を通過したときにポジションを閉じる条件を追加しようとしています。 コードを正しく挿入してください。まず、 ボタンを押し、次にポップアップウィンドウにコードを貼り付けて ください。 Mahmoud Ahmed Mahmoud Fahmy 2021.10.14 19:53 #20 Vladimir Karputov #:最初に ボタンを 押し 、次にポップアップウィンドウにコードを貼り付けて ください。 こんにちは。 前回の投稿から少しコードを変更したのですが、まだポジションが閉じません。 double Kij2=iIchimokuGet(KIJUNSEN_LINE,3); double SpanA2=iIchimokuGet(SENKOUSPANA_LINE,3); double SpanB2=iIchimokuGet(SENKOUSPANB_LINE,3); double Chinkou2=iIchimokuGet(CHIKOUSPAN_LINE,3); //クロージング・オーダー // m_trade.PositionClose(m_symbol.Name()); //注文を買う // { // if (PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY ) // { // if(iClose(_Symbol,Period(),1) < SpanB) // { //m_trade.PositionClose(_Symbol); // } // } // } //売り注文 // if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL) // { // if(iClose(_Symbol,Period(),1) > SpanB) // { // m_trade.PositionClose(_Symbol); //} // } // if(m_trade.ResultRetcode()==10008 || m_trade.ResultRetcode()==10009)//リクエスト完了または注文発注 // { // Print("終了ルール:チケット#:",m_trade.ResultOrder())で決済注文が発注されました; // } //それ以外 // { // Print("Exit rules:決済注文の要求を完了できませんでした:",GetLastError()); // ResetLastError(); //を返す; // } // } // } // } //--- チェックBUY if (iClose(_Symbol,PERIOD_D1,1) < iClose(_Symbol,PERIOD_D1,2) && iHigh(_Symbol,PERIOD_H4,2) - iLow(_Symbol,PERIOD_H4,2) > iHigh(_Symbol,PERIOD_H4,1)- iLow(_Symbol,PERIOD_H4,2) ) { if (iOpen(m_symbol.Name(),Period(),0) > Kij && iOpen(m_symbol.Name(),Period(),0) > SpanA) // if(Ten1<=Kij1 && Ten>Kij &&) //&& m_symbol.Ask()>SpanA1 //&& m_symbol.Ask()>SpanB1&&。 // iOpen(m_symbol.Name(),Period(),1)<iClose(m_symbol.Name(),Period(),1))//||。 //(Chinkou1<=iClose(m_symbol.Name(),Period(),11) && Chinkou>iClose(m_symbol.Name(),Period(),10)&&。 // m_symbol.Ask()>SpanA1 && m_symbol.Ask()>SpanB1 && . // iOpen(m_symbol.Name(),Period(),1)<iClose(m_symbol.Name(),Period(),1))。 { double sl=(InpStopLoss==0)?0.0:m_symbol.Ask()-ExtStopLoss; if(sl>=m_symbol.Bid()) // インシデント:ポジションはまだオープンされておらず、すでにクローズされていなければならない。 { PrevBars=0; return; } double tp=(InpTakeProfit==0)?0.0:m_symbol.Ask()+ExtTakeProfit; if(iClose(_Symbol,Period(),1) < SpanB) { if(m_position.Select(_Symbol)) //このシンボルの位置がすでに存在する場合 { if(m_position.PositionType()==POSITION_TYPE_BUY) m_trade.PositionClose(_Symbol); //これが買いポジションなら、決済する。 // if(m_Position.PositionType()==POSITION_TYPE_SELL) return; } } OpenBuy(sl,tp); } } //--- 売りチェック if (iClose(_Symbol,PERIOD_D1,1) > iClose(_Symbol,PERIOD_D1,2) && iHigh(_Symbol,PERIOD_D1,2) - iLow(_Symbol,PERIOD_H4,2) > iHigh(_Symbol,PERIOD_H4,1)- iLow(_Symbol,PERIOD_H4,2) ) { if(iOpen(m_symbol.Name(),Period(),0) < Kij && iOpen(m_symbol.Name(),Period(),0) < SpanB) // if(Ten1>Kij1 && Ten<Kij &&) //&& m_symbol.Bid()<SpanA1 && m_symbol.Bid()<SpanB1 && ... // iOpen(m_symbol.Name(),Period(),1)>iClose(m_symbol.Name(),Period(),1))//||。 //(Chinkou1>=iOpen(m_symbol.Name(),Period(),11) && Chinkou<iOpen(m_symbol.Name(),Period(),10) && //m_symbol.Bid()<SpanA1 && m_symbol.Bid()<SpanB1 && 。 //iOpen(m_symbol.Name(),Period(),1)>iClose(m_symbol.Name(),Period(),1)))。 { double sl=(InpStopLoss==0)?0.0:m_symbol.Bid()+ExtStopLoss; if(sl<=m_symbol.Ask()) // インシデント:ポジションはまだオープンされておらず、すでにクローズされていなければならない。 { PrevBars=0; return; } double tp=(InpTakeProfit==0)?0.0:m_symbol.Bid()-ExtTakeProfit; if(iClose(_Symbol,Period(),1) > SpanB) { if(m_position.Select(_Symbol)) //このシンボルの位置がすでに存在する場合 { if(m_position.PositionType()==POSITION_TYPE_SELL) m_trade.PositionClose(_Symbol); //これが買いポジションなら、決済する。 // if(m_Position.PositionType()==POSITION_TYPE_SELL) return; } } OpenSell(sl,tp); } } // m_trade.PositionClose(_Symbol); } 123 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
コードデバッグを有効にし、ステップバイステップでテストします。
ご回答ありがとうございます。
デバッグを行い、高スプレッドによる誤ったSLがこの問題を引き起こしていることがわかりました。
ご回答ありがとう。
デバッグをしてみたところ、高スプレッドによる誤ったSLがこの問題を引き起こしていることがわかりました。
Expert Advisor内のコードは正しいのですが、ポジションを置いた瞬間に価格が強く動いた場合、ポジションはオープンされません。
Expert Advisor内のコードは正しいのですが、ポジションを置いた瞬間に価格が強く動いた場合、ポジションはオープンされません。
この部分はcrypo用に修正すべきだと思います:
ロットの決定にRISKを使用するとgetpointerエラーが表示され、fix LOTを使用しなければならない:
***
RISKを使ってロットを決定すると、getpointerエラーが表示され、fix LOTを使わなければなりません:
あなたは自分の間違いに気づきました。
注意:スプレッドの大きい商品を使用する場合は、適切なストップロスを 設定する必要があります。
常に覚えておいてください:アスクとビッドです。
あなたは自分のミスに気づいた。
ご回答ありがとうございます。エキスパートではすべて正しいのですが、問題は残高不足とスプレッドの抱き合わせによる誤ったSL です。
レバレッジを100に設定しました。このようなエラーが表示されます:
OpenBuy, ERROR: メソッド CheckOpenLong
OpenSell, ERROR: メソッド CheckOpenShort
これは、BTCの最小ロットサイズでポジションを建てるには、この残高では不十分だということですか?
それは本当ですか?
ご回答ありがとうございます。エキスパートではすべてのことが正しいのですが、問題は残高 不足と ハグ・スプレッドによる誤ったSLによる ものです。
私は500$の残高に1%のリスクを設定し、レバレッジを100に設定しました:
OpenBuy, ERROR: メソッド CheckOpenLong
OpenSell, ERROR: メソッド CheckOpenShort
この残高は、BTCの最小ロットサイズでポジションを建てるのに十分ではないということですか?
それは本当ですか?
あなたは間違いを発見しました。どうすれば間違いを正せるか考えてみてください。
こんにちは、ウラジミール
専門家を教えていただきありがとうございます。バーのクローズが雲を通過したときにポジションを閉じる条件を追加しようとしています。
こんにちは、ウラジーミル
専門家を教えていただきありがとうございます。バーのクローズが雲を通過したときにポジションを閉じる条件を追加しようとしています。
コードを正しく挿入してください。まず、
ボタンを押し、次にポップアップウィンドウにコードを貼り付けて ください。
最初に ボタンを 押し 、次にポップアップウィンドウにコードを貼り付けて ください。
こんにちは。
前回の投稿から少しコードを変更したのですが、まだポジションが閉じません。