MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 434 1...427428429430431432433434435436437438439440441...1953 新しいコメント Vladislav Andruschenko 2018.01.24 17:37 #4331 WinProject:グラフィカルオブジェクトを削除 する方法を教えてください。変数値から名前が構成される縦線があります。 string name=="test1"; string Vertline="line_"+name; ObjectCreate(0,VertLine,OBJ_VLINE,0,time,cena); test1という名前の縦線だけを削除するにはどうしたらよいでしょうか?この機能は便利です。サブウィンドウ内の名前のプレフィックスで指定された型のオブジェクトをすべて削除する。intObjectsDeleteAll() longchart_id,// チャートIDconst stringprefix,// オブジェクト名のプレフィックス intsub_window=EMPTY,// ウィンドウのインデックスintobject_type=EMPTY//削除するオブジェクトの種類); WinProject 2018.01.24 17:48 #4332 Vladislav Andruschenko:この機能は便利です。チャートサブウィンドウ内の名前のプレフィックスで指定されたタイプのオブジェクトを全て削除します。intObjectsDeleteAll( longchart_id,// )チャート識別子 const stringprefix,// prefixオブジェクト名 intsub_window=EMPTY,// ウィンドウインデックス intobject_type=EMPTY// 削除するオブジェクトタイプ );ありがとうございます。私が理解する限り、この関数はプレフィックスをオブジェクト名の最初の部分文字列として理解しますが、オブジェクト名の2番目の部分文字列で削除するにはどうすればよいのでしょうか。この目的のために、オブジェクト名に対してStringSubstrと StringFindを使用する方法はありますか? Vladislav Andruschenko 2018.01.24 18:14 #4333 WinProject: ありがとうございます。私が理解した限りでは、この関数はプレフィックスによってオブジェクト名の最初の部分文字列を理解しますが、オブジェクト名の2番目の部分文字列で削除するにはどうしたらよいでしょうか。この目的のために、オブジェクト名に対してStringSubstrとStringFindを使用する方法はありますか?を待つ。コードを指定しました。string Vertline="линия_"+name; 接頭辞があるところ。それは誰もがやっていることです。そこで、接頭辞でオブジェクトを削除する機能を提案したのです。"линия_"サフィックスで行を削除する必要がある場合、StringFind を使用してすべてのオブジェクトを検索することができます例えばvoid ObjectsDelete() { string NameEA="суффикс"; for(int i=ObjectsTotal();i>=0;i--) { if(StringFind(ObjectName(i),NameEA)!=-1)ObjectDelete(ObjectName(i)); } } WinProject 2018.01.24 18:48 #4334 Vladislavさん、ありがとうございます。フォーラムのメンバーの方々のおかげで、すべてがうまくいきました。面白いサイトができましたね、ありがとうございます mila.com 2018.01.24 20:17 #4335 こんにちは。ポジションが表示された後、トローリングが停止してしまうのですが、原因を教えてください。 ポイントはこれです:2つのポジション1、2を開く。1つの価格で、最初はトロールによって閉じられ、2番目のトロールは、位置の開始 価格で、位置が1であるという条件で活性化されています。 すべてうまくいき、ポジション1がクローズし、ポジション2がトロールされるが、さらに2つのポジション3と4が異なる価格でオープンすると、トロールはポジション2には移動しない。 なぜ、トローリングができなくなるのか? void Tral_SL_one(int _TrailingStop=0,int _TrailingStep=0) { if(_TrailingStop<=0) return; for(int i=0; i<OrdersTotal(); i++) { if(!(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))) continue; if(OrderSymbol()!=Symbol()) continue; if(OrderMagicNumber()!=_MagicNumber) continue; if(OrderType()==OP_BUY) { if(NumPosByPrice(Symbol(),OP_BUY,OrderOpenPrice(),_MagicNumber)==1) { if(NormalizeDouble(Bid-OrderOpenPrice(),Digits)>NormalizeDouble(_TrailingStop *Point,Digits)) { if(NormalizeDouble(OrderStopLoss(),Digits)<NormalizeDouble(Bid -(_TrailingStop+_TrailingStep-1)*Point,Digits) || OrderStopLoss()==0) { if(OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-_TrailingStop*Point,Digits),OrderTakeProfit(),OrderExpiration())); } } } } if(OrderType()==OP_SELL) { if(NumPosByPrice(Symbol(),OP_SELL,OrderOpenPrice(),_MagicNumber)==1) { if(NormalizeDouble(OrderOpenPrice()-Ask,Digits)>NormalizeDouble(_TrailingStop *Point,Digits)) { if(NormalizeDouble(OrderStopLoss(),Digits)>NormalizeDouble(Ask+(_TrailingStop+_TrailingStep-1)*Point,Digits) || OrderStopLoss()==0) { if(OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+_TrailingStop*Point,Digits),OrderTakeProfit(),OrderExpiration())); } } } } } } //=== int NumPosByPrice(string sy="",int op=-1,double pp=0,int mn=-1) { double px,py; int d,i,k=OrdersTotal(),num=0; if(sy=="0") sy=Symbol(); for(i=0; i<k; i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) { if(OrderType()==OP_BUY || OrderType()==OP_SELL) { if(mn<0 || OrderMagicNumber()==mn) { d=MarketInfo(OrderSymbol(),MODE_DIGITS); px=NormalizeDouble(pp, d); py=NormalizeDouble(OrderOpenPrice(), d); if(pp<=0 || px==py) num++; } } } } } return(num); } Vladislav Andruschenko 2018.01.24 20:26 #4336 mila.com:こんにちは。ポジションが表示された後、トローリングが停止してしまうのですが、原因を教えてください。ポイントはこれです:2つのポジション1、2を開く。1つの価格で、最初はトロールによって閉じられ、2番目のトロールは、位置の開始 価格で、位置が1であるという条件で活性化されています。すべてうまくいき、ポジション1がクローズし、ポジション2がトロールされるが、さらに2つのポジション3と4が異なる価格でオープンすると、トロールはポジション2には移動しない。 なぜ、トローリングができなくなるのか? 私は重大な誤りを指摘するだけです。 for(int i=0; i<OrdersTotal(); i++) { if(!(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))) continue; if(OrderSymbol()!=Symbol()) continue; if(OrderMagicNumber()!=_MagicNumber) continue; if(OrderType()==OP_BUY) { if(NumPosByPrice(Symbol(),OP_BUY,OrderOpenPrice(),_MagicNumber)==1)注文を経て、ポジション数をカウントする関数を実行し、それによってNumPosByPrice 関数で別のポジションを選択します。ということで、さらに構築 if(NormalizeDouble(Bid-OrderOpenPrice(),Digits)>NormalizeDouble(_TrailingStop *Point,Digits))は正しく動作しません。これを解決する方法はたくさんあります。例えば、こんな感じです。void Tral_SL_one(int _TrailingStop=0,int _TrailingStep=0) { if(_TrailingStop<=0) return; for(int i=0; i<OrdersTotal(); i++) { if(!(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))) continue; if(OrderSymbol()!=Symbol()) continue; if(OrderMagicNumber()!=_MagicNumber) continue; if(OrderType()==OP_BUY) { if(NumPosByPrice(Symbol(),OP_BUY,OrderOpenPrice(),_MagicNumber)==1) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if(NormalizeDouble(Bid-OrderOpenPrice(),Digits)>NormalizeDouble(_TrailingStop *Point,Digits))これは根本的に間違っているのだが、手っ取り早く理解するためには、これで十分だろう。の後です。if(NumPosByPrice(Symbol(),OP_BUY,OrderOpenPrice(),_MagicNumber)==1)を追加する。OrderSelect(i,SELECT_BY_POS,MODE_TRADES); mila.com 2018.01.24 21:19 #4337 Vladislav Andruschenko:重大な誤りを指摘します。これを解決する方法はたくさん あります。ありがとうございます、なるほど、トロール) amenrazp 2018.01.26 12:27 #4338 mt4でアラートウィンドウを再び開く方法を教えてください。 以前、偽のシグナルを作成してアラートウィンドウを開くスクリプトがあったのですが、システムを再インストールした後、インターネット上でそれを見つけることができなくなりました。誰か持ってるかも? Vladislav Andruschenko 2018.01.26 12:47 #4339 amenrazp:mt4でアラートウィンドウを再び開く方法を教えてください。 以前、偽のシグナルを作成してアラートウィンドウを開くスクリプトがあったのですが、システムを再インストールした後、インターネット上でそれを見つけることができなくなりました。誰か持ってるかも?Alert(""); こんなスクリプト? amenrazp 2018.01.26 13:01 #4340 Vladislav Andruschenko: Alert(""); こんなスクリプト?そのようですね。ここに添付する方法はありますか? 1...427428429430431432433434435436437438439440441...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
グラフィカルオブジェクトを削除 する方法を教えてください。変数値から名前が構成される縦線があります。
string name=="test1"; string Vertline="line_"+name; ObjectCreate(0,VertLine,OBJ_VLINE,0,time,cena); test1という名前の縦線だけを削除するにはどうしたらよいでしょうか?
この機能は便利です。
サブウィンドウ内の名前のプレフィックスで指定された型のオブジェクトをすべて削除する。
intObjectsDeleteAll()
longchart_id,// チャートID
const stringprefix,// オブジェクト名のプレフィックス
intsub_window=EMPTY,// ウィンドウのインデックス
intobject_type=EMPTY//削除するオブジェクトの種類
);
この機能は便利です。
チャートサブウィンドウ内の名前のプレフィックスで指定されたタイプのオブジェクトを全て削除します。
intObjectsDeleteAll(
longchart_id,// )チャート識別子
const stringprefix,// prefixオブジェクト名
intsub_window=EMPTY,// ウィンドウインデックス
intobject_type=EMPTY// 削除するオブジェクトタイプ
);
ありがとうございます。私が理解する限り、この関数はプレフィックスをオブジェクト名の最初の部分文字列として理解しますが、オブジェクト名の2番目の部分文字列で削除するにはどうすればよいのでしょうか。この目的のために、オブジェクト名に対してStringSubstrと StringFindを使用する方法はありますか?
ありがとうございます。私が理解した限りでは、この関数はプレフィックスによってオブジェクト名の最初の部分文字列を理解しますが、オブジェクト名の2番目の部分文字列で削除するにはどうしたらよいでしょうか。この目的のために、オブジェクト名に対してStringSubstrとStringFindを使用する方法はありますか?
を待つ。
コードを指定しました。
接頭辞があるところ。
それは誰もがやっていることです。
そこで、接頭辞でオブジェクトを削除する機能を提案したのです。
"линия_"
サフィックスで行を削除する必要がある場合、StringFind を使用してすべてのオブジェクトを検索することができます
例えば
Vladislavさん、ありがとうございます。フォーラムのメンバーの方々のおかげで、すべてがうまくいきました。面白いサイトができましたね、ありがとうございます
こんにちは。ポジションが表示された後、トローリングが停止してしまうのですが、原因を教えてください。
ポイントはこれです:2つのポジション1、2を開く。1つの価格で、最初はトロールによって閉じられ、2番目のトロールは、位置の開始 価格で、位置が1であるという条件で活性化されています。
すべてうまくいき、ポジション1がクローズし、ポジション2がトロールされるが、さらに2つのポジション3と4が異なる価格でオープンすると、トロールはポジション2には移動しない。
なぜ、トローリングができなくなるのか?
こんにちは。ポジションが表示された後、トローリングが停止してしまうのですが、原因を教えてください。
ポイントはこれです:2つのポジション1、2を開く。1つの価格で、最初はトロールによって閉じられ、2番目のトロールは、位置の開始 価格で、位置が1であるという条件で活性化されています。
すべてうまくいき、ポジション1がクローズし、ポジション2がトロールされるが、さらに2つのポジション3と4が異なる価格でオープンすると、トロールはポジション2には移動しない。
なぜ、トローリングができなくなるのか?
私は重大な誤りを指摘するだけです。
注文を経て、ポジション数をカウントする関数を実行し、それによってNumPosByPrice 関数で別のポジションを選択します。
ということで、さらに構築
は正しく動作しません。
これを解決する方法はたくさんあります。
例えば、こんな感じです。
これは根本的に間違っているのだが、手っ取り早く理解するためには、これで十分だろう。
の後です。
を追加する。
重大な誤りを指摘します。
これを解決する方法はたくさん あります。
ありがとうございます、なるほど、トロール)
mt4でアラートウィンドウを再び開く方法を教えてください。 以前、偽のシグナルを作成してアラートウィンドウを開くスクリプトがあったのですが、システムを再インストールした後、インターネット上でそれを見つけることができなくなりました。誰か持ってるかも?
mt4でアラートウィンドウを再び開く方法を教えてください。 以前、偽のシグナルを作成してアラートウィンドウを開くスクリプトがあったのですが、システムを再インストールした後、インターネット上でそれを見つけることができなくなりました。誰か持ってるかも?
Alert(""); こんなスクリプト?
そのようですね。ここに添付する方法はありますか?