MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1829 1...182218231824182518261827182818291830183118321833183418351836...1953 新しいコメント soleg 2021.12.21 05:24 #18281 SanAlex #:をコードに追加してください。シグナルインジケータで、アラートを持っています。 ここで、より多くのシグナルを持つために、いくつかの行を削除してください。 ありがとうございました。 законопослушный гражданин 2021.12.23 09:39 #18282 押忍 フクロウをもう少し複雑にしてみることにした。 トレーリングのようなことをしたいのですが、シングル/ダブルアクションで のアイデアです。 価格が75%からテイクに移行する - ストップを20ピップ減らし(例)、テイクを20ピップ増やした。 価格は 90% テイクに渡される - ストップは 30p 減少し、テイクは 10p 増加する。 私はこのような図式を考えています(...機能...)=>(TP - Mparametr)。 ここで:TP - TakeProfit Mparametr- EAの外部変数に設定(例:ポイント数)。 この問題を解決するために、どのような関数を使うべきでしょうか? 定義済みの変数bid,askについて読んだことがあるのですが、基本として使うべきでしょうか? それともMarketInfoや SymbolInfoTickを使うべきでしょうか? 私も似たような解決策を持っていますが、ストップ&テイクのシフトはロットに依存します。 if((iOTy == OP_BUY)&& (LOT()>LotControl)) { dSL = NormalizeDouble(dOOP - StopLoss * Point+DownLoss * Point, Digits); dTP = NormalizeDouble(dOOP + TakeProfit * Point+DownProfit * Point, Digits); bool bOM = OrderModify(iOTi, dOOP, dSL, dTP, 0, clrNONE); } 似たようなことをしたい。比較的簡単なこと。 MarketInfo - Получение рыночной информации - Справочник MQL4 docs.mql4.com MarketInfo - Получение рыночной информации - Справочник MQL4 Порт-моне тв 2021.12.23 10:08 #18283 Tretyakov Rostyslav #:あるいは、このように この掲示板を1週間近く書き続けてきましたが、ここで問題です。保留中のレベラーもアプローチから類推してボタンで閉じるように設定すると、価格が到達したときに1ポイント下だったのが、なぜかボタンを押さずに勝手に閉じてしまいます。これは1ポイント上(押してから理論通り水準到達後)にしておくべきなのですが...。 //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- ObjectCreate(0,"Button_1",OBJ_BUTTON,0,0,0); ObjectSetInteger(0,"Button_1",OBJPROP_XDISTANCE,20); ObjectSetInteger(0,"Button_1",OBJPROP_YDISTANCE,120); ObjectSetInteger(0,"Button_1",OBJPROP_XSIZE,100); ObjectSetInteger(0,"Button_1",OBJPROP_YSIZE,20); ObjectCreate(0,"Label_1",OBJ_LABEL,0,0,0); ObjectSetInteger(0,"Label_1",OBJPROP_XDISTANCE,20); ObjectSetInteger(0,"Label_1",OBJPROP_YDISTANCE,40); ObjectSetInteger(0,"Label_1",OBJPROP_CORNER,CORNER_LEFT_UPPER); ObjectSetString(0,"Label_1",OBJPROP_TEXT,"Price"); ObjectSetInteger(0,"Label_1",OBJPROP_COLOR,clrBlack); //--- CLOSE BUY +1 ObjectCreate(0,"Button_21",OBJ_BUTTON,0,0,0); ObjectSetInteger(0,"Button_21",OBJPROP_XDISTANCE,240); ObjectSetInteger(0,"Button_21",OBJPROP_YDISTANCE,120); ObjectSetInteger(0,"Button_21",OBJPROP_XSIZE,100); ObjectSetInteger(0,"Button_21",OBJPROP_YSIZE,20); ObjectSetString(0,"Button_21",OBJPROP_TEXT,"CLOSE BUY +1"); ObjectSetInteger(0,"Button_21",OBJPROP_BGCOLOR,Beige); ObjectSetInteger(0,"Button_21",OBJPROP_COLOR,Green); ObjectCreate(0,"Label_21",OBJ_LABEL,0,0,0); ObjectSetInteger(0,"Label_21",OBJPROP_XDISTANCE,20); ObjectSetInteger(0,"Label_21",OBJPROP_YDISTANCE,40); ObjectSetInteger(0,"Label_21",OBJPROP_CORNER,CORNER_LEFT_UPPER); ObjectSetInteger(0,"Label_21",OBJPROP_COLOR,clrBlack); //--- //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| ChartEvent function | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--- if(sparam=="Button_1") { ObjectSetString(0,"Label_1",OBJPROP_TEXT,DoubleToString(Ask-1*_Point,Digits)); Comment("цена на момент нажатия кнопки: "+Ask, " ждем цены для входа: "+(Ask-1*_Point)); } if(sparam=="Button_21") { ObjectSetString(0,"Label_21",OBJPROP_TEXT,DoubleToString(Bid+1*_Point,Digits)); ObjectSetText("MSG","цена Bid в момент нажатия кнопки: "+ DoubleToString(Bid,Digits),8,"Verdana", White); ObjectSetText("MSG2","ждем цены Bid для закрытия: "+ DoubleToString(Bid+1*_Point,Digits),8,"Verdana", White); } } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- int ticket; double price=StringToDouble(ObjectGetString(0,"Label_1",OBJPROP_TEXT)); if(Ask<=price) { ticket = OrderSend(_Symbol,OP_BUY,0.01,Ask,0,0,0,NULL,0,0,clrGreen); ObjectSetString(0,"Label_1",OBJPROP_TEXT,DoubleToString(DBL_MAX,Digits)); ObjectSetInteger(0,"Button_1",OBJPROP_STATE,false); Comment("цена ожидания была: "+price, " зашли по: "+Ask, " TakeProfit на: "+(Ask+4*_Point)); } //-----close buy +1 double priceclosebuyplus1=StringToDouble(ObjectGetString(0,"Label_21",OBJPROP_TEXT)); if(Bid>=priceclosebuyplus1) { ObjectSetString(0,"Label_21",OBJPROP_TEXT,DoubleToString(DBL_MAX,Digits)); ObjectSetInteger(0,"Button_21",OBJPROP_STATE,false); ObjectSetText("MSG","ожидали цену закрытия Bid: "+DoubleToString(priceclosebuyplus1,Digits),8,"Verdana", White); ObjectSetText("MSG2","закрыли по цене Bid: "+ DoubleToString(Bid,Digits),8,"Verdana", White); CloseBuyPositions1(); } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void CloseBuyPositions1() { for(int i=OrdersTotal()-1; i>=0; i--) if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if(OrderType()==OP_BUY) { if(OrderClose(OrderTicket(), OrderLots(), Bid, 3, NULL)) { Print("Order Close"); } } } 助け舟を出す Tretyakov Rostyslav 2021.12.23 10:21 #18284 Порт-моне тв #:とにかく、私はほぼ一週間、このタブローを書いてきたし、ここで問題は、私はまた、価格が到達したときに下のポイントだったアプローチ上のボタンのアナログに閉鎖のいくつかの種類に最も保留中のレベルを置く場合、尋ねずに何らかの理由で自動的にそれを上記のポイント(押した後、理論上の必要性としてレベルに達したときに)すべきボタンを押すことなく、すぐに閉じています。助け舟を出す if(Bid>=priceclosebuyplus1&&priceclosebuyplus1>0) Tretyakov Rostyslav 2021.12.23 10:37 #18285 законопослушный гражданин #:押忍フクロウをもう少し複雑にしてみることにした。トレーリングのようなことをしたいのですが、シングル/ダブルアクションでのアイデアです。価格が75%からテイクに移行する - ストップを20ピップ減らし(例)、テイクを20ピップ増やす。価格が90%通過してテイク-ストップが(例えば)30ピップ減少し、テイクが10ピップ増加した。 int TakeProfit=200; int StopLoss =100; //+----------------------------------------------------------------------------+ void TrailingOrders() { for(int i = OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if(OrderType() == OP_BUY) { if(Bid >= OrderOpenPrice()+(TakeProfit*0.75*_Point) && OrderStopLoss()<OrderOpenPrice()-20*_Point) { if(OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss()+20*_Point, OrderTakeProfit()+20*_Point, 0)) Print("Модификации ордера на покупку успешна!"); else Print("Ошибка модификации ордера на покупку! - ",GetLastError()); } if(Bid >= OrderOpenPrice()+(TakeProfit*0.9*_Point) && OrderStopLoss()>=OrderOpenPrice()-20*_Point) { if(OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss()+30*_Point, OrderTakeProfit()+10*_Point, 0)) Print("Модификации ордера на покупку успешна!"); else Print("Ошибка модификации ордера на покупку! - ",GetLastError()); } } } } } } законопослушный гражданин 2021.12.23 10:51 #18286 Tretyakov Rostyslav #: ありがとうございます!面白いですね。 もし(Bidは現在の価格パラメータで、どのような方法でも呼び出されない)、特定の値をそれと比較することができることが判明した? で、Bidの 単位はticksですか?(金銭で表されていない) Порт-моне тв 2021.12.23 10:53 #18287 Tretyakov Rostyslav #: 1つだけ気になることがあります。 すべての注文が時々終了するのですが(つまり、すべて、常に!)、時々、3-4個の注文を出すと、そのうちの2個または1個だけが終了することがあるのです。このための特別なi-checkがあるのですが、ヒントになるかもしれません。 //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void CloseBuyPositions1() { for(int i=OrdersTotal()-1; i>=0; i--) if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if(OrderType()==OP_BUY) { if(OrderClose(OrderTicket(), OrderLots(), Bid, 0, NULL)) { Print("Order Close"); } } } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void CloseSellPositions2() { for(int i=OrdersTotal()-1; i>=0; i--) if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if(OrderType()==OP_SELL) { if(OrderClose(OrderTicket(), OrderLots(), Ask, 0, NULL)) { Print("Order Close"); } } } //+------------------------------------------------------------------+ Tretyakov Rostyslav 2021.12.23 11:01 #18288 законопослушный гражданин #:ありがとうございます!面白いですね。もし(Bidは現在の価格パラメータで、どのような方法でも呼び出されない)、特定の値をそれと比較することができることが判明した?で、Bidの 単位はticksですか?(金銭で表されていない) 入札は 現価 ということで、始値±の条件と比較してください。 ティックについては、BidもAskもティックで計測されることはない。ティックは新しい価格の到来を意味します。 законопослушный гражданин 2021.12.23 11:04 #18289 Tretyakov Rostyslav #:入札は 現価 ということで、始値±条件と比較する必要があります。ティックについては、BidもAskもティックで計測されることはない。ティックは新しい価格の到来を意味します。 なるほど、では何を基準にするかというと、pips/ピップス? Tretyakov Rostyslav 2021.12.23 11:12 #18290 законопослушный гражданин #:なるほど、ではどのように測定するのでしょうか? MarketInfo(_Symbol,MODE_TICKSIZE); 1...182218231824182518261827182818291830183118321833183418351836...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
をコードに追加してください。
シグナルインジケータで、アラートを持っています。 ここで、より多くのシグナルを持つために、いくつかの行を削除してください。
押忍
フクロウをもう少し複雑にしてみることにした。
トレーリングのようなことをしたいのですが、シングル/ダブルアクションで
のアイデアです。
価格が75%からテイクに移行する - ストップを20ピップ減らし(例)、テイクを20ピップ増やした。
価格は 90% テイクに渡される - ストップは 30p 減少し、テイクは 10p 増加する。
私はこのような図式を考えています(...機能...)=>(TP - Mparametr)。
ここで:TP - TakeProfit
Mparametr- EAの外部変数に設定(例:ポイント数)。
この問題を解決するために、どのような関数を使うべきでしょうか?
定義済みの変数bid,askについて読んだことがあるのですが、基本として使うべきでしょうか?
それともMarketInfoや SymbolInfoTickを使うべきでしょうか?
私も似たような解決策を持っていますが、ストップ&テイクのシフトはロットに依存します。
似たようなことをしたい。比較的簡単なこと。
あるいは、このように
この掲示板を1週間近く書き続けてきましたが、ここで問題です。保留中のレベラーもアプローチから類推してボタンで閉じるように設定すると、価格が到達したときに1ポイント下だったのが、なぜかボタンを押さずに勝手に閉じてしまいます。これは1ポイント上(押してから理論通り水準到達後)にしておくべきなのですが...。
助け舟を出す
とにかく、私はほぼ一週間、このタブローを書いてきたし、ここで問題は、私はまた、価格が到達したときに下のポイントだったアプローチ上のボタンのアナログに閉鎖のいくつかの種類に最も保留中のレベルを置く場合、尋ねずに何らかの理由で自動的にそれを上記のポイント(押した後、理論上の必要性としてレベルに達したときに)すべきボタンを押すことなく、すぐに閉じています。
助け舟を出す
押忍
フクロウをもう少し複雑にしてみることにした。
トレーリングのようなことをしたいのですが、シングル/ダブルアクションで
のアイデアです。
価格が75%からテイクに移行する - ストップを20ピップ減らし(例)、テイクを20ピップ増やす。
価格が90%通過してテイク-ストップが(例えば)30ピップ減少し、テイクが10ピップ増加した。
ありがとうございます!面白いですね。
もし(Bidは現在の価格パラメータで、どのような方法でも呼び出されない)、特定の値をそれと比較することができることが判明した?
で、Bidの 単位はticksですか?(金銭で表されていない)
1つだけ気になることがあります。 すべての注文が時々終了するのですが(つまり、すべて、常に!)、時々、3-4個の注文を出すと、そのうちの2個または1個だけが終了することがあるのです。このための特別なi-checkがあるのですが、ヒントになるかもしれません。
ありがとうございます!面白いですね。
もし(Bidは現在の価格パラメータで、どのような方法でも呼び出されない)、特定の値をそれと比較することができることが判明した?
で、Bidの 単位はticksですか?(金銭で表されていない)
入札は 現価 ということで、始値±の条件と比較してください。
ティックについては、BidもAskもティックで計測されることはない。ティックは新しい価格の到来を意味します。
入札は 現価 ということで、始値±条件と比較する必要があります。
ティックについては、BidもAskもティックで計測されることはない。ティックは新しい価格の到来を意味します。
なるほど、では何を基準にするかというと、pips/ピップス?
なるほど、ではどのように測定するのでしょうか?
MarketInfo(_Symbol,MODE_TICKSIZE);