MQL 4に関するプログラマーへの質問と回答 - ページ 6 1234567 新しいコメント Vladimir Pastushak 2010.09.19 13:31 #51 コードが複雑なのか、もっとシンプルなものがあるのか? hasayama 2010.09.19 13:44 #52 1.注文券を 配列または2変数に格納する。 2.OrderSelectで1つずつ選択します(ここでは配列の方が便利です). 3.今、この瞬間のタイプを確認する。 4.OP_BUY || OP_SELLの場合→2枚目のチケットのOrderDelete。 Vladimir Pastushak 2010.09.19 14:05 #53 簡単な例でお願いします!いろいろと理解できましたが、order selectが少し詰まっています。 Vladimir Pastushak 2010.09.19 14:11 #54 以下は、エラーが発生するコードです。 1つのペンダントがトリガーされると2つ目のペンダントが削除されない ......。 if (MA1<MA2) { if(n==0) { //==================================================================================================================// tiket=OrderSend(Symbol()、OP_BUY、Lots、NormalizeDouble(Ask、Digits)、Slip、slb、tpb、NULL、MagicNumber、0、CLR_NONE)。 if(tiket<0) Alert("Error # - ",GetLastError()," On instrument ", Symbol()); //write error// ... //================================================================================================================// t2 = OrderSend(Symbol(), OP_BUYSTOP, Lots*Overlot,OtkrBS, Slip,0,tpb, 0, MagicNumber,expiration)。 //================================================================================================================// t1 = OrderSend(Symbol(), OP_SELLSTOP, Lots*Overlot+1,OtkrSS,Slip,0,slb,0, MagicNumber,expiration)を実行。 //================================================================================================================// //==================================================================================================================// } //==================================================================================================================// さもなくば //=================================================================================================================// if (MA1>MA2) { tiket=OrderSend(Symbol()、OP_SELL、Lots、NormalizeDouble(Bid、Digits)、Slip、sls、tps、NULL、MagicNumber、0、CLR_NONE)を実行。 if(tiket<0) Alert("Error # - ",GetLastError()," On tool ", Symbol())); //書き込みエラー//。 //================================================================================================================// t2 = OrderSend(Symbol(), OP_BUYSTOP, Lots*Overlot+1,OtkrSS1,Slip,0,sls, 0, MagicNumber,expiration)を実行。 //================================================================================================================// t1 = OrderSend(Symbol(), OP_SELLSTOP, Lots*Overlot, OtkrBS1,Slip,0,tps, 0, MagicNumber,expiration)を実行。 //================================================================================================================// } //==================================================================================================================// // SELLSTOPが発動した場合、BUYSTOPを削除します。 if(OrderSelect(t1, SELECT_BY_TICKET)) { if(オーダータイプ()==OP_SELL) { OrderDelete(t2)です。 } } //---- // BUYSTOPが発生した場合、SELLSTOPを削除します。 if(OrderSelect(t2, SELECT_BY_TICKET)) { if(OrderType()==OP_BUY) { OrderDelete(t1)です。 } } Questions and Answers to Indicators with alerts/signal [警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 hasayama 2010.09.19 14:51 #55 条件を間違えているのでは?の括弧の位置が違うのでは? if ( n == 0 ) { if (MA1<MA2) { //==================================================================================================================// tiket=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slip,slb,tpb,NULL,MagicNumber,0,CLR_NONE); if(tiket<0) Alert("Ошибка № - ",GetLastError()," На инструменте ", Symbol()); //пишет ошибку// //================================================================================================================// t2 = OrderSend(Symbol(), OP_BUYSTOP, Lots*Overlot,OtkrBS, Slip,0,tpb, 0, MagicNumber,expiration); //================================================================================================================// t1 = OrderSend(Symbol(), OP_SELLSTOP, Lots*Overlot+1,OtkrSS,Slip,0,slb, 0, MagicNumber,expiration); //================================================================================================================// //==================================================================================================================// } //==================================================================================================================// else //=================================================================================================================// if (MA1>MA2) { tiket=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),Slip,sls,tps,NULL,MagicNumber,0,CLR_NONE); if(tiket<0) Alert("Ошибка № - ",GetLastError()," На инструменте ", Symbol()); //пишет ошибку// //================================================================================================================// t2 = OrderSend(Symbol(), OP_BUYSTOP, Lots*Overlot+1,OtkrSS1,Slip,0,sls, 0, MagicNumber,expiration); //================================================================================================================// t1 = OrderSend(Symbol(), OP_SELLSTOP, Lots*Overlot, OtkrBS1,Slip,0,tps, 0, MagicNumber,expiration); //================================================================================================================// } } //==================================================================================================================// // если сработал SELLSTOP удаляем BUYSTOP if(OrderSelect(t1, SELECT_BY_TICKET)) { if(OrderType()==OP_SELL) { OrderDelete(t2); } } //---- // если сработал BUYSTOP удаляем SELLSTOP if(OrderSelect(t2, SELECT_BY_TICKET)) { if(OrderType()==OP_BUY) { OrderDelete(t1); } } とか、そんな感じです。 Vladimir Pastushak 2010.09.19 14:58 #56 は、残念ながらうまくいきませんでしたが......。 Vladimir Pastushak 2010.09.19 15:01 #57 何がすごいって、私も似たようなEAを持っていることです。それで全部確認したんですが、原理的には同じです。 これは動くのにこっちは動かない......。 違いは、他のEAでは買いエントリーのポーズは1つだけで、ペンダントが2つあることです。 hasayama 2010.09.19 15:01 #58 のチケットは、グローバル変数 で?(スタートなどの機能以外) そうでない場合は、1目盛りごとにリセットされます。 Expert Advisor の各ステップでさらに Print()- を挿入すると、どこでクラッシュし、何ができないのかがわかります。 Vladimir Pastushak 2010.09.19 15:23 #59 優勝 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Vladimir Pastushak 2010.09.19 15:25 #60 hasayama: のチケットは、グローバル変数で?(スタートなどの機能以外) そうでない場合は、1目盛りごとにリセットされます。 Expert Advisor の各ステップでさらに Print()- を挿入すると、どこでクラッシュし、何ができないのかがわかります。 チケットは最初からdoubleと宣言しているので、順番が1.0と2.0では登録できないことを見落としていました。 そのため、削除のための関数は浮動小数点を待っていたのです 1234567 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
1.注文券を 配列または2変数に格納する。
2.OrderSelectで1つずつ選択します(ここでは配列の方が便利です).
3.今、この瞬間のタイプを確認する。
4.OP_BUY || OP_SELLの場合→2枚目のチケットのOrderDelete。
簡単な例でお願いします!いろいろと理解できましたが、order selectが少し詰まっています。
以下は、エラーが発生するコードです。 1つのペンダントがトリガーされると2つ目のペンダントが削除されない ......。
if (MA1<MA2)
{
if(n==0)
{
//==================================================================================================================//
tiket=OrderSend(Symbol()、OP_BUY、Lots、NormalizeDouble(Ask、Digits)、Slip、slb、tpb、NULL、MagicNumber、0、CLR_NONE)。
if(tiket<0) Alert("Error # - ",GetLastError()," On instrument ", Symbol()); //write error// ...
//================================================================================================================//
t2 = OrderSend(Symbol(), OP_BUYSTOP, Lots*Overlot,OtkrBS, Slip,0,tpb, 0, MagicNumber,expiration)。
//================================================================================================================//
t1 = OrderSend(Symbol(), OP_SELLSTOP, Lots*Overlot+1,OtkrSS,Slip,0,slb,0, MagicNumber,expiration)を実行。
//================================================================================================================//
//==================================================================================================================//
}
//==================================================================================================================//
さもなくば
//=================================================================================================================//
if (MA1>MA2)
{
tiket=OrderSend(Symbol()、OP_SELL、Lots、NormalizeDouble(Bid、Digits)、Slip、sls、tps、NULL、MagicNumber、0、CLR_NONE)を実行。
if(tiket<0) Alert("Error # - ",GetLastError()," On tool ", Symbol())); //書き込みエラー//。
//================================================================================================================//
t2 = OrderSend(Symbol(), OP_BUYSTOP, Lots*Overlot+1,OtkrSS1,Slip,0,sls, 0, MagicNumber,expiration)を実行。
//================================================================================================================//
t1 = OrderSend(Symbol(), OP_SELLSTOP, Lots*Overlot, OtkrBS1,Slip,0,tps, 0, MagicNumber,expiration)を実行。
//================================================================================================================//
}
//==================================================================================================================//
// SELLSTOPが発動した場合、BUYSTOPを削除します。
if(OrderSelect(t1, SELECT_BY_TICKET))
{
if(オーダータイプ()==OP_SELL)
{
OrderDelete(t2)です。
}
}
//----
// BUYSTOPが発生した場合、SELLSTOPを削除します。
if(OrderSelect(t2, SELECT_BY_TICKET))
{
if(OrderType()==OP_BUY)
{
OrderDelete(t1)です。
}
}
条件を間違えているのでは?の括弧の位置が違うのでは?
とか、そんな感じです。
何がすごいって、私も似たようなEAを持っていることです。それで全部確認したんですが、原理的には同じです。 これは動くのにこっちは動かない......。
違いは、他のEAでは買いエントリーのポーズは1つだけで、ペンダントが2つあることです。
のチケットは、グローバル変数 で?(スタートなどの機能以外)
そうでない場合は、1目盛りごとにリセットされます。
Expert Advisor の各ステップでさらに Print()- を挿入すると、どこでクラッシュし、何ができないのかがわかります。
優勝 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
のチケットは、グローバル変数で?(スタートなどの機能以外)
そうでない場合は、1目盛りごとにリセットされます。
Expert Advisor の各ステップでさらに Print()- を挿入すると、どこでクラッシュし、何ができないのかがわかります。