コーディングの方法は? - ページ 250 1...243244245246247248249250251252253254255256257...347 新しいコメント increase 2010.11.22 07:55 #2491 mladen: EAが既存の未決済取引を無視し、未決済のまま、新しい単一取引をオープンしクローズすれば、よりシンプルになるのではないでしょうか。 現在、それはそれ自身の取引を開き、閉じますが、それはまた、追加の既存のオープントレードを閉じます。 Mladen Rakic 2010.11.22 08:07 #2492 増加 部分的なコードから、私が提案できることです。NoClosesという ブール値のパラメータを 作成し、そのパラメータをtrueに設定 すると、このスニペット(CBと CSが 1でない場合、コードは注文をクローズしません)のように適用した場合、注文をクローズしないはずです。 よろしくお願いします。 Mladen increase: EAが既存の未決済取引を無視する、つまり未決済のままにしておき、自分自身の新しい単一取引を開始・終了すれば、よりシンプルになるのではないでしょうか。 increase 2010.11.22 08:27 #2493 mladen: 増加部分的なコードから、私が提案できることです。NoClosesという ブール値のパラメータを作成し、そのパラメータをtrueに設定 すると、スニペット(CBと CSが 1でない場合、そのコードは注文を閉じない)のように適用した場合、それは注文を閉じないはずです。 について Mladen それはそうですが、私が誤解していなければ、EAによって開かれた取引も決して閉じないということで、買いと売りが切り替わるだけなのでしょうか? Mladen Rakic 2010.11.22 08:49 #2494 はい、その通りです。 私の理解では、EAに注文を出させ、あなたが手動で注文を管理(決済)する、というのがあなたの考えだったはずです。このパラメータを falseに戻すと、EAが注文の決済を再開することができます。 increase: それはそうですが、私が誤解していなければ、EAが開いた取引も閉じることはなく、買いと売りが切り替わるだけだということでしょうか? increase 2010.11.22 09:01 #2495 mladen: はい、その通りです。私が理解した限りでは、EAに注文を出させ、あなたが手動で注文を管理(決済)する、というのがあなたの考えでした。このパラメータをfalseに戻すと、EAが注文の決済を再開することができます - つまり、「外からコントロールできる」のです。 私は、EAがその注文を開き、閉じ、既存の注文を無視したいので、例えば、次のようになります。 1.5つの売り 注文を開いている 2.EAを適用すると買い注文が1つ開く 3.私は今、5つの売りと1つの買いを持っている 4.EAが売りをトリガーし、買いをクローズします。 5.現在、6つの売り注文(既存の5つの売りとEAの1つの売り)を持っています。 6.EAが買いをトリガーして、その売りをクローズします。 7.現在、5つの売りと1つの買いなどを持っています。 私は既存の売りを閉じます。EAは上記のように自分自身の取引とは別に、他の取引を無視します。 Mladen Rakic 2010.11.22 09:07 #2496 増加 Magicparameter を 0 以外の値に設定すると、すでにそうなります(これは、買い注文を決済する直前に決済するかどうかをチェックするコードの一部です)。 if(OrderType()==OP_BUY&&OrderSymbol()==Symbol()&&( (OrderMagicNumber()==Magic)||Magic==0)) つまり、Magic が 0 以外であり、Magic の値が一意である場合、自分自身で開いた注文のみを決済します。 increase: あ、すみません、あいまいな表現でした、EAに注文を開閉させ、既存の注文を無視させたいのです、例えば 1.5つの売り注文を開いている2.EAを適用すると、1つの買い注文が開かれる3.私は今、5つの売りと1つの買いを持っている4.EAが売りをトリガーし、買いをクローズします。5.現在、6つの売り注文(既存の5つの売りとEAの1つの売り)を持っています。6.EAが買いをトリガーして、その売りをクローズします。7.現在、売りが5枚、買いが1枚など 既存の売りを決済し、EAは上記のように自分自身の取引以外の他の取引を無視します。 Chistabo 2010.11.23 15:55 #2497 特定の時間枠でOncePerBarを取引する こんにちは、親愛なるfEllA's! 私は、テスターでは問題なく動作し、指示通り4H Barごとに複数のトレードを行うEAを持っています(そうでない人はいません)。今、デモ(Alpari UK)で11組のペアでテストしたところ、EAは1回しか取引しません、本来ならもっと(最大3回、指示通り)取引すべきです。条件が揃えば4Hバー毎に取引します。 私は、GlobalVariableをコード化した「Semaphor」関数と、1つの定義済みTimeFrame(この場合は4H)内で複数の注文が開くのを防ぐための次のコード部分を持っています。 //買い if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))。 { if (SignalsOnly) { // ------ 警告は、信号ごとに一度だけ、または15分または30分に一度である必要があります。 if (CheckAlertTime == iTime (NULL, 5, 0)) return(0); さもなければ CheckAlertTime = iTime (NULL, 5, 0); if (Alerts) アラート (Symbol() + " + DoubleToStr (Ask, Digits) + " BUY Signal")。 if (PlaySounds) PlaySound (WhichSound)。 } if (!IsTrade && !SignalsOnly) { if (CheckAlertTime == iTime (NULL, OncePerBarTF, 0)) return (0); else CheckAlertTime = iTime (NULL, OncePerBarTF, 0); //フリーマージンチェック if (AccountFreeMargin() < (1000 * Lots)) { Print ("資金がありません。フリーマージン = ", AccountFreeMargin()); return(0); } if (UseTakeProfit && CloseLotsPercent == 100) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0; { if (MoneyManagement) Lots = NormalizeDouble ((AccountFreeMargin() * Risk / 100 / ((Ask - BuySL) / Point / TickValue)), 2); else Lots = Lots; } if (TradeIsBusy() && IsTradingAllowed() < 0) return (-1); RefreshRates(); Ticket = OrderSend (Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "7Qi BUY " + MagicNo, MagicNo, 0, DodgerBlue).もしも、Ticket > 0なら、(Symbol(), OP_BUY, Lots, Ask, Slimage, StopLossLevel, TakeProfitLevel); if (チケット > 0) { if (オーダーセレクト (Ticket, SELECT_BY_TICKET, MODE_TRADES)) { Print ("7Qi BUY opened:", OrderOpenPrice()); if (Alerts) Alert (Symbol() + " + DoubleToStr (Ask, Digits) + " BUY opened"); if (PlaySounds) PlaySound (WhichSound)。 } さもなくば { Print ("Error opening BUY: ", Err); } } // TradedThisBar = Bars; if (EachTickMode) TickCheck = True; if (!EachTickMode) BarCount = Bars; TradeIsNotBusy(); return (0); } } //------------------------------------------------- このコードで可能でしょうか。 if (CheckAlertTime == iTime (NULL, OncePerBarTF, 0)) return (0); else CheckAlertTime = iTime (NULL, OncePerBarTF, 0); EAが時間帯の途中で取引するのを防ぐ?それはバーの開始時にのみチェックするのでしょうか? TradedThisBar = Bars」関数を使用すると、EAを1TimeFrameだけにしなければならないのでは? Semaphor」関数は、TrailingStopsにも、PartialCloseLotsにもコード化されています。 ありがとうございました。 楽しんでください。 サイモン スロベニア アスク! How to code? EAとインジケータの売買 Chistabo 2010.11.23 22:18 #2498 Iiiiiik - 問題が見つかりました こんにちは。 問題は、おそらく次のような組み合わせだと思います。 if (TradeIsBusy() /*& IsTradingAllowed()*/ < 0) return (-1); //----------------------------------------------------------------------------------------- int IsTradingAllowed (int MaxWaitingSec = 30) { if (!IsTradeAllowed()) { int StartWaitingTime = GetTickCount(); Print ("Trade context is busy! Wait until it is free..."); if (Alerts) Alert (Symbol() + " EA取引は許可されていません!待機中..."); while (true) { if (IsStopped()) { Print ("EA が終了しました!"); return(-1); } if (GetTickCount() - StartWaitingTime > MaxWaitingSec * 1000 ) { Print( "待ち時間の上限を超えました(" + MaxWaitingSec + " 秒)!); return(-2); } if (IsTradeAllowed()) { Print ("Trade context is now free!"); return(0); } スリープ(100)。 } } さもなくば { Print ("Trade context is free!"); return(1); } } */ //----------------------------------------------- int TradeIsBusy (int MaxWaitingSec = 30) { if (IsTesting()) return(1); int Err = 0, StartWaitingTime = GetTickCount()。 while (true) { if (IsStopped()) { Print ("EA was terminated!"); return(-1); } if (GetTickCount() - StartWaitingTime > MaxWaitingSec * 1000) { Print ("待ち時間(" + MaxWaitingSec + " sec) "を超えました!"); if (Alerts) Alert (Symbol() + " EA waiting time exceeded!"); return(-2); } if (GlobalVariableCheck ("TradeIsBusy")) をブレークします。 さもなくば { Err = GetLastError()。 if (Err != 0) { Print ("TradeIsBusy - GlobalVariableCheck - Error # ", Err); Sleep (100); を続けます。 } if (GlobalVariableSet ("TradeIsBusy", 1.0) > 0) return(1); さもなくば { Err = GetLastError()。 if (Err != 0) { Print ("TradeIsBusy - GlobalVariableSet - Error # ", Err); Sleep(100); を続けてください。 } } } while (true) { if (IsStopped()) { Print ("EA is terminated!"); return(-1); } if (GetTickCount() - StartWaitingTime > MaxWaitingSec * 1000) { Print ("待ち時間(" + MaxWaitingSec + " sec) "を超えました!"); if (Alerts) Alert (Symbol() + " 待機時間を超えました!"); return (-2); } if (GlobalVariableSetOnCondition ("TradeIsBusy", 1.0, 0.0 )) return (1); さもなくば { Err = GetLastError()。 if (Err != 0) { Print ("TradeIsBusy - GlobalVariableSetOnCondition - Error # ", Err).Print ("TradeIsBusy - GlobalVariableSetOnCondition - Error #", Err); を続けてください。 } if (Alerts) Alert (Symbol() + " - 別のEAが取引を終了するのを待っています..."); Sleep (1000)。 } //-------------------------------- void TradeIsNotBusy() { int Err; if (IsTesting()) { return(0); } while (true) { if (IsStopped()) { Print (Symbol() + " EAが終了しました!")); return(-1); } if (GlobalVariableSet ("TradeIsBusy", 0.0) > 0) return(1); さもなくば { Err = GetLastError()。 if (Err != 0) Print ("TradeIsNotBusy - GlobalVariableSet - Error # ", Err); } スリープ(100)。 } } //----------------------------------------------------------------------------------------------- IsTradeAllowed関数 なしで試してみます。 とにかくありがとうございます。 楽しんでください。 サイモン How to code? 10ポイント 3.mq4 10points 3.mq4 削除済み 2010.11.24 11:39 #2499 エラーコード 130 ----- 削除 ----- もう必要ない............。 削除済み 2010.11.24 12:27 #2500 ダウンロード可能なmq4チュートリアル こんにちは、皆さん。 mq4コードのチュートリアルやリファレンスブックが見つかりません(オンラインではありません!)。 助けていただけますか? よろしくお願いします。 解決済み:ユーティリティを使用してファイルを解凍する必要がありました。 1...243244245246247248249250251252253254255256257...347 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
EAが既存の未決済取引を無視し、未決済のまま、新しい単一取引をオープンしクローズすれば、よりシンプルになるのではないでしょうか。
現在、それはそれ自身の取引を開き、閉じますが、それはまた、追加の既存のオープントレードを閉じます。
増加
部分的なコードから、私が提案できることです。NoClosesという ブール値のパラメータを 作成し、そのパラメータをtrueに設定 すると、このスニペット(CBと CSが 1でない場合、コードは注文をクローズしません)のように適用した場合、注文をクローズしないはずです。
よろしくお願いします。
Mladen
EAが既存の未決済取引を無視する、つまり未決済のままにしておき、自分自身の新しい単一取引を開始・終了すれば、よりシンプルになるのではないでしょうか。
増加
部分的なコードから、私が提案できることです。NoClosesという ブール値のパラメータを作成し、そのパラメータをtrueに設定 すると、スニペット(CBと CSが 1でない場合、そのコードは注文を閉じない)のように適用した場合、それは注文を閉じないはずです。
について
Mladenそれはそうですが、私が誤解していなければ、EAによって開かれた取引も決して閉じないということで、買いと売りが切り替わるだけなのでしょうか?
はい、その通りです。
私の理解では、EAに注文を出させ、あなたが手動で注文を管理(決済)する、というのがあなたの考えだったはずです。このパラメータを falseに戻すと、EAが注文の決済を再開することができます。
それはそうですが、私が誤解していなければ、EAが開いた取引も閉じることはなく、買いと売りが切り替わるだけだということでしょうか?
はい、その通りです。私が理解した限りでは、EAに注文を出させ、あなたが手動で注文を管理(決済)する、というのがあなたの考えでした。このパラメータをfalseに戻すと、EAが注文の決済を再開することができます - つまり、「外からコントロールできる」のです。
私は、EAがその注文を開き、閉じ、既存の注文を無視したいので、例えば、次のようになります。
1.5つの売り 注文を開いている
2.EAを適用すると買い注文が1つ開く
3.私は今、5つの売りと1つの買いを持っている
4.EAが売りをトリガーし、買いをクローズします。
5.現在、6つの売り注文(既存の5つの売りとEAの1つの売り)を持っています。
6.EAが買いをトリガーして、その売りをクローズします。
7.現在、5つの売りと1つの買いなどを持っています。
私は既存の売りを閉じます。EAは上記のように自分自身の取引とは別に、他の取引を無視します。
増加
Magicparameter を 0 以外の値に設定すると、すでにそうなります(これは、買い注文を決済する直前に決済するかどうかをチェックするコードの一部です)。
つまり、Magic が 0 以外であり、Magic の値が一意である場合、自分自身で開いた注文のみを決済します。
あ、すみません、あいまいな表現でした、EAに注文を開閉させ、既存の注文を無視させたいのです、例えば
1.5つの売り注文を開いている
2.EAを適用すると、1つの買い注文が開かれる
3.私は今、5つの売りと1つの買いを持っている
4.EAが売りをトリガーし、買いをクローズします。
5.現在、6つの売り注文(既存の5つの売りとEAの1つの売り)を持っています。
6.EAが買いをトリガーして、その売りをクローズします。
7.現在、売りが5枚、買いが1枚など
既存の売りを決済し、EAは上記のように自分自身の取引以外の他の取引を無視します。特定の時間枠でOncePerBarを取引する
こんにちは、親愛なるfEllA's!
私は、テスターでは問題なく動作し、指示通り4H Barごとに複数のトレードを行うEAを持っています(そうでない人はいません)。今、デモ(Alpari UK)で11組のペアでテストしたところ、EAは1回しか取引しません、本来ならもっと(最大3回、指示通り)取引すべきです。条件が揃えば4Hバー毎に取引します。
私は、GlobalVariableをコード化した「Semaphor」関数と、1つの定義済みTimeFrame(この場合は4H)内で複数の注文が開くのを防ぐための次のコード部分を持っています。
//買い
if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))。
{
if (SignalsOnly)
{
// ------ 警告は、信号ごとに一度だけ、または15分または30分に一度である必要があります。
if (CheckAlertTime == iTime (NULL, 5, 0)) return(0);
さもなければ CheckAlertTime = iTime (NULL, 5, 0);
if (Alerts) アラート (Symbol() + " + DoubleToStr (Ask, Digits) + " BUY Signal")。
if (PlaySounds) PlaySound (WhichSound)。
}
if (!IsTrade && !SignalsOnly)
{
if (CheckAlertTime == iTime (NULL, OncePerBarTF, 0)) return (0);
else CheckAlertTime = iTime (NULL, OncePerBarTF, 0);
//フリーマージンチェック
if (AccountFreeMargin() < (1000 * Lots))
{
Print ("資金がありません。フリーマージン = ", AccountFreeMargin());
return(0);
}
if (UseTakeProfit && CloseLotsPercent == 100) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;
{
if (MoneyManagement) Lots = NormalizeDouble ((AccountFreeMargin() * Risk / 100 / ((Ask - BuySL) / Point / TickValue)), 2);
else Lots = Lots;
}
if (TradeIsBusy() && IsTradingAllowed() < 0)
return (-1);
RefreshRates();
Ticket = OrderSend (Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "7Qi BUY " + MagicNo, MagicNo, 0, DodgerBlue).もしも、Ticket > 0なら、(Symbol(), OP_BUY, Lots, Ask, Slimage, StopLossLevel, TakeProfitLevel);
if (チケット > 0)
{
if (オーダーセレクト (Ticket, SELECT_BY_TICKET, MODE_TRADES))
{
Print ("7Qi BUY opened:", OrderOpenPrice());
if (Alerts) Alert (Symbol() + " + DoubleToStr (Ask, Digits) + " BUY opened");
if (PlaySounds) PlaySound (WhichSound)。
}
さもなくば
{
Print ("Error opening BUY: ", Err);
}
}
// TradedThisBar = Bars;
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
TradeIsNotBusy();
return (0);
}
}
//-------------------------------------------------
このコードで可能でしょうか。
if (CheckAlertTime == iTime (NULL, OncePerBarTF, 0)) return (0);
else CheckAlertTime = iTime (NULL, OncePerBarTF, 0);
EAが時間帯の途中で取引するのを防ぐ?それはバーの開始時にのみチェックするのでしょうか?
TradedThisBar = Bars」関数を使用すると、EAを1TimeFrameだけにしなければならないのでは?
Semaphor」関数は、TrailingStopsにも、PartialCloseLotsにもコード化されています。
ありがとうございました。
楽しんでください。
サイモン
スロベニア
Iiiiiik - 問題が見つかりました
こんにちは。
問題は、おそらく次のような組み合わせだと思います。
if (TradeIsBusy() /*& IsTradingAllowed()*/ < 0)
return (-1);
//-----------------------------------------------------------------------------------------
int IsTradingAllowed (int MaxWaitingSec = 30)
{
if (!IsTradeAllowed())
{
int StartWaitingTime = GetTickCount();
Print ("Trade context is busy! Wait until it is free...");
if (Alerts) Alert (Symbol() + " EA取引は許可されていません!待機中...");
while (true)
{
if (IsStopped())
{
Print ("EA が終了しました!");
return(-1);
}
if (GetTickCount() - StartWaitingTime > MaxWaitingSec * 1000 )
{
Print( "待ち時間の上限を超えました(" + MaxWaitingSec + " 秒)!);
return(-2);
}
if (IsTradeAllowed())
{
Print ("Trade context is now free!");
return(0);
}
スリープ(100)。
}
}
さもなくば
{
Print ("Trade context is free!");
return(1);
}
}
*/
//-----------------------------------------------
int TradeIsBusy (int MaxWaitingSec = 30)
{
if (IsTesting()) return(1);
int Err = 0, StartWaitingTime = GetTickCount()。
while (true)
{
if (IsStopped())
{
Print ("EA was terminated!");
return(-1);
}
if (GetTickCount() - StartWaitingTime > MaxWaitingSec * 1000)
{
Print ("待ち時間(" + MaxWaitingSec + " sec) "を超えました!");
if (Alerts) Alert (Symbol() + " EA waiting time exceeded!");
return(-2);
}
if (GlobalVariableCheck ("TradeIsBusy"))
をブレークします。
さもなくば
{
Err = GetLastError()。
if (Err != 0)
{
Print ("TradeIsBusy - GlobalVariableCheck - Error # ", Err);
Sleep (100);
を続けます。
}
if (GlobalVariableSet ("TradeIsBusy", 1.0) > 0) return(1);
さもなくば
{
Err = GetLastError()。
if (Err != 0)
{
Print ("TradeIsBusy - GlobalVariableSet - Error # ", Err);
Sleep(100);
を続けてください。
}
}
}
while (true)
{
if (IsStopped())
{
Print ("EA is terminated!");
return(-1);
}
if (GetTickCount() - StartWaitingTime > MaxWaitingSec * 1000)
{
Print ("待ち時間(" + MaxWaitingSec + " sec) "を超えました!");
if (Alerts) Alert (Symbol() + " 待機時間を超えました!");
return (-2);
}
if (GlobalVariableSetOnCondition ("TradeIsBusy", 1.0, 0.0 )) return (1);
さもなくば
{
Err = GetLastError()。
if (Err != 0)
{
Print ("TradeIsBusy - GlobalVariableSetOnCondition - Error # ", Err).Print ("TradeIsBusy - GlobalVariableSetOnCondition - Error #", Err);
を続けてください。
}
if (Alerts) Alert (Symbol() + " - 別のEAが取引を終了するのを待っています...");
Sleep (1000)。
}
//--------------------------------
void TradeIsNotBusy()
{
int Err;
if (IsTesting())
{
return(0);
}
while (true)
{
if (IsStopped())
{
Print (Symbol() + " EAが終了しました!"));
return(-1);
}
if (GlobalVariableSet ("TradeIsBusy", 0.0) > 0) return(1);
さもなくば
{
Err = GetLastError()。
if (Err != 0)
Print ("TradeIsNotBusy - GlobalVariableSet - Error # ", Err);
}
スリープ(100)。
}
}
//-----------------------------------------------------------------------------------------------
IsTradeAllowed関数 なしで試してみます。
とにかくありがとうございます。
楽しんでください。
サイモン
エラーコード 130
----- 削除 ----- もう必要ない............。
ダウンロード可能なmq4チュートリアル
こんにちは、皆さん。
mq4コードのチュートリアルやリファレンスブックが見つかりません(オンラインではありません!)。
助けていただけますか?
よろしくお願いします。
解決済み:ユーティリティを使用してファイルを解凍する必要がありました。