コーディングの方法は? - ページ 293 1...286287288289290291292293294295296297298299300...347 新しいコメント William Snyder 2012.04.06 04:23 #2921 lincoln2012: 私はMQ4を学習しようとしています。私の最初の簡単なプログラムは、2つのMAが交差したときに警告をポップすることになっています。私はなぜ理解することはできません このコードは動作しません。どんな助けでも本当に感謝します!よろしくお願いします。extern int Period_MA1 = 5;extern int Period_MA2 = 1;double MA1;double MA2;int init(){return(0);}//+------------------------------------------------------------------+int deinit(){return(0);}//+------------------------------------------------------------------+int start(){//--------------------------------------------------------------------MA1=iMA(NULL,0,Period_MA1,0,MODE_SMA,PRICE_CLOSE,0)。MA2=iMA(NULL,0,Period_MA2,0,MODE_SMA,PRICE_CLOSE,0);; MA2=iMA(NULL,0,Period_MA2,0,MODE_SMA,PRICE_CLOSE,0);//--------------------------------------------------------------------if (MA2 == MA1 )Alert("価格は同じです(",Period_MA2,").");//Alertを返します。} こんにちは、Lincoln2012。 このMa Crossのコードをチェック アウトするかもしれません。 ファイル: macross-1.mq4 7 kb Min Li 2012.04.06 13:46 #2922 lincoln2012: 私はMQ4を学ぼうとしています。私の最初の簡単なプログラムは、2つのMAが交差したときに警告をポップすることになっています。私はなぜ理解することはできませんこのコードはうまくいきません。 } 任意の2本のインジケータの クロスをコード化するポイントはこのような考え方です。 1.1. 現在のバーがライン1>ライン2であり、前のバーがライン1<ライン2であれば、Up crossとなる。 2.2. もし、現在のバーline1line2なら、Down crossです。 MrPip 2012.04.08 08:28 #2923 mj10: ハイ Mt4でちょっとしたプログラミングをしているのですが、これがまた面白い!でもプロではないので、古いインジケーターを編集しているだけです。OK シンプルなインジケータを作りたいんだけど、どうすればいいのかわからないんだ。そのシンプルなインジケータは、単純に値をチェックし、すべての変数の値が同じであれば、すべての変数の値が一致するポイントを描画するものだ。私の簡単な解決法変数があったとしますdouble moveavg1;double movingavg12;double movingavg13; double movingavg13;double movingavg14;double moveavg15;double moveavg16;double movingavg17;double moveavg18;double moveavg19;double moveavg10;double movingavgall;iStochastic(1)を例に挙げていますが、どのようなインジケータでも使用可能です。移動avg12=iStochastic(1)moveavg13=iStochastic(2)とします。...ということでさてif (movingavg12=movingavg13=movingavg14,...) (put value in variable "movingavgall") //vriaに等しい値を入れる。バー上にムービングアブガルを描画応用編移動平均線3と移動平均線5が同じ値であることを確認したいとします。RSI 1とRSI 2の値が80の場合、このインジケータはRSIと一緒に使うことができます。などなどMTFを追加しても、それはボーナスとして追加されるでしょう。文章で書くと簡単そうですが、解決策が見つからなかったので、どなたか助けていただければと思います。私が言っていることが理解できれば幸いです。 しゃい 比較する値があれば、次のようなコードを使うことになります。 値が等しいかどうかのチェックは==を使います。 1つの=は変数に値を代入するのに使います。 2つ以上の値を比較する場合は、ANDの意味を持つ&&を使用します。 moveavgall = 0; if ((a == b) && (b == c) && (c == d)) moveavgall = a; 次に、movingavgall が値を持つかどうかを次のようにして確認します。 if (movingavgall != 0) { // ここで何かする } Googleでメタトレーダープログラムを検索してください。 MT4でプログラミングをするための良いチュートリアルがいくつか見つかるはずです。 C言語プログラミングの良い本も役に立ちます。 ロバート・ヒル、別名MrPip How to code? why is this not Very noob question - drhouse7 2012.04.09 10:00 #2924 このコードを簡略化する みなさん、こんにちは。 このコードをstringconcatenateコマンドを使用して簡略化しようとしています。 ObjectSetText("uitog1v",StringConcatenate("/\ ", uitog1v, "%"),12, hr1v, DodgerBlue ).を使って、このコードを簡略化しようとしています。 をクリックすると、このようになります。 ObjectSetText("uitog1v",StringConcatenate("/TEINC ", uitog1v,"%","/TEINC ", uitog2v,"%","/TEINC ", uitog3v,"%"),12,StringConcatenate(hr1v,hr2v,hr3v), DodgerBlue ).とすることで、このようになります。 どなたか助けていただけると幸いです。 よろしくお願いします。 doc トレンド_alexcud_v_2men.mq4 ファイル: trend_alexcud_v_2men.mq4 22 kb Mladen Rakic 2012.04.09 10:57 #2925 ... ドキュメント これらの要素がすべて必要な場合、これ以上簡単な書き方はないでしょう。 dr.house7: 皆さん、こんにちは。このコードをstringconcatenateコマンドで簡略化するとこんな感じです。 ObjectSetText("uitog1v",StringConcatenate("/Think ", uitog1v, "%"),12, hr1v, DodgerBlue ); をクリックすると、このようになります。 ObjectSetText("uitog1v",StringConcatenate("/TEINC ", uitog1v,"%","/TEINC ", uitog2v,"%","/TEINC ", uitog3v,"%"),12,StringConcatenate(hr1v,hr2v,hr3v), DodgerBlue ).とすることで、このようにすることが可能です。 どなたか助けていただけると幸いです。 よろしくお願いします。 ドク トレンド_alexcud_v_2men.mq4 Georgebaker 2012.04.09 13:58 #2926 方法60秒ごとにアラートを出す 60秒ごとにアラートを出すようなコードを作るにはどうしたらいいですか? 下記のコードを作成しましたが、チャートに貼り付けた時点から1分ごとにアラートが表示されます。 #include #include // exported variables // local variables double PipValue=1; // this variable is here to support 5-digit brokers bool Terminated = false; string LF = "\n"; // use this in custom or utility blocks where you need line feeds int NDigits = 4; // used mostly for NormalizeDouble in Flex type blocks int ObjCount = 0; // count of all objects created on the chart, allows creation of objects with unique names int ExpectedTime2 = 0; int init() { NDigits = Digits; ObjectsDeleteAll(); // clear the chart Comment(""); // clear the chart } // Expert start int start() { if (Bars < 10) { Comment("Not enough bars"); return (0); } if (Terminated == true) { Comment("EA Terminated."); return (0); } OnEveryTick1(); } void OnEveryTick1() { if (true == false && true) PipValue = 10; if (true && (NDigits == 3 || NDigits == 5)) PipValue = 10; OncePerMinutes2(); } void OncePerMinutes2() { int datetime800 = TimeLocal(); if (ExpectedTime2 == 0 || datetime800 > ExpectedTime2 + 60) { ExpectedTime2 = datetime800 + 60 * 1; // reset paused time } if (datetime800 >= ExpectedTime2 && datetime800 < ExpectedTime2 + 60) { ExpectedTime2 = datetime800 + 60 * 1; Alert3(); } } void Alert3() { Alert("One minute gone"); } int deinit() { if (true) ObjectsDeleteAll(); } How to code? Fetching iHighest bar value How To make some drhouse7 2012.04.09 14:36 #2927 mladen: ドク これらの要素がすべて必要であれば、これ以上シンプルな書き方はないでしょう。 うーん、今回は運が悪かった、とにかくありがとうございます。 よろしくお願いします。 ドク MrPip 2012.04.10 20:53 #2928 2番目のStringConcatenateの呼び出しに問題があります。 3つの異なるフォント名を足し合わせているので、有効な結果名はありません。 ロバート dr.house7: 皆さん、こんにちは。私は、このコードからstringconcatenateコマンドを使用して、このコードを簡略化しようとしています。 ObjectSetText("uitog1v",StringConcatenate("/\ ", uitog1v, "%"),12, hr1v, DodgerBlue ); をクリックすると、このようになります。 ObjectSetText("uitog1v",StringConcatenate("/TEINC ", uitog1v,"%","/TEINC ", uitog2v,"%","/TEINC ", uitog3v,"%"),12,StringConcatenate(hr1v,hr2v,hr3v), DodgerBlue ).とすることで、このようにすることが可能です。 どなたか助けていただけると幸いです。 よろしくお願いします。 ドク トレンド_alexcud_v_2men.mq4 outofdebt 2012.05.01 05:45 #2929 EAのヘルプが必要...テスターで取引が成立しない EAを作成しているのですが、何をやっても取引を終了させることができません。取引はうまく開くのですが、決済したいときにEAが決済してくれません。 私のEAコードの一部を掲載しますので、経験豊富なコーダーのどなたかがこの問題の原因を解明してくれるかもしれません。buyTrade' と 'sellTrade' という変数はEA全体に対してグローバルです。 注:私は、ロングでもショートでも、常に1つの取引だけをオープンにしておきたいと思っています。取引は「常にある」ので、ロングのシグナルが来たら、既存のショートはクローズされ、逆もまた然りです。 これはやっていません。この取引は、取引を開始し、さらに取引を開始し...さらに取引を開始し...それらがすべて最終的にストップを打つまで、それらを開き続けています。 ありがとうございました。 //---- Is there a new signal? // Buy signal --------------------------------------- //if(buyTrade==false || sellTrade==false) { if (STC_VIDYAprev = 10.00) { if (sellTrade==true) { for (int i = OrdersTotal() - 1; i >= 0; i--) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if ( OrderType() == OP_BUY ) { int OldTicket=OrderTicket(); double lots=OrderLots();} RefreshRates(); //OrderSelect() needed ? double symAsk = NormalizeDouble( MarketInfo( Sym, MODE_ASK ), SymDigits ); bool closeSellOrder = OrderClose( OldTicket, lots, symAsk, 0, CLR_NONE ); } sellTrade = false; } if(buyTrade==false) { EnterLong(Sym, Lots, ""); buyTrade = true; } } //else //return(0); // Sell signal --------------------------------------- if (STC_VIDYAprev > 90.00 && STC_VIDYAcur <= 90.00 ) { if (buyTrade==true) { for (int j = OrdersTotal() - 1; j >= 0; j--) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if ( OrderType() == OP_SELL ) { int oldTicket=OrderTicket(); double lotts=OrderLots();} RefreshRates(); //OrderSelect() needed ? double symBid = NormalizeDouble( MarketInfo( Sym, MODE_BID ), SymDigits ); bool closeBuyOrder = OrderClose( oldTicket, lotts, symBid, 0, CLR_NONE ); } buyTrade = false; } if(sellTrade==false) { EnterShrt( Sym, Lots, ""); sellTrade = true; } } //else //return(0); How to code? MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 すべて閉じる」/「開く」ツール Mladen Rakic 2012.05.01 12:50 #2930 ... これは部分的なコードなので、売り注文を閉じるときにsymBidをsymAskに、買い注文を閉じるときにsymAskをsymBidに置き換えてみてください(終値を反転させると、売りを買値で閉じることができず、買いを売値で閉じることができなくなります)。 outofdebt: 私はEAに取り組んでいますが、何をやっても取引を終了させることができません。取引はうまく開くのですが、決済したいときにEAが決済してくれません。 私のEAコードの一部を掲載しますので、経験豊富なコーダーのどなたかが、この問題の原因を解明してくれるかもしれません。buyTrade'と'sellTrade'という変数はEA全体に対してグローバルです。 注:私は、ロングでもショートでも、常に1つの取引だけをオープンにしておきたいと思っています。取引は「常にある」ので、ロングのシグナルが来たら、既存のショートはクローズされ、逆もまた然りです。 これはやっていません。この取引は、取引を開始し、さらに取引を開始し...さらに取引を開始し...それらがすべて最終的にストップを打つまで、それらを開き続けています。 事前にありがとうございます。 //---- Is there a new signal? // Buy signal --------------------------------------- //if(buyTrade==false || sellTrade==false) { if (STC_VIDYAprev = 10.00) { if (sellTrade==true) { for (int i = OrdersTotal() - 1; i >= 0; i--) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if ( OrderType() == OP_BUY ) { int OldTicket=OrderTicket(); double lots=OrderLots();} RefreshRates(); //OrderSelect() needed ? double symAsk = NormalizeDouble( MarketInfo( Sym, MODE_ASK ), SymDigits ); bool closeSellOrder = OrderClose( OldTicket, lots, symAsk, 0, CLR_NONE ); } sellTrade = false; } if(buyTrade==false) { EnterLong(Sym, Lots, ""); buyTrade = true; } } //else //return(0); // Sell signal --------------------------------------- if (STC_VIDYAprev > 90.00 && STC_VIDYAcur <= 90.00 ) { if (buyTrade==true) { for (int j = OrdersTotal() - 1; j >= 0; j--) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if ( OrderType() == OP_SELL ) { int oldTicket=OrderTicket(); double lotts=OrderLots();} RefreshRates(); //OrderSelect() needed ? double symBid = NormalizeDouble( MarketInfo( Sym, MODE_BID ), SymDigits ); bool closeBuyOrder = OrderClose( oldTicket, lotts, symBid, 0, CLR_NONE ); } buyTrade = false; } if(sellTrade==false) { EnterShrt( Sym, Lots, ""); sellTrade = true; } } //else //return(0); 1...286287288289290291292293294295296297298299300...347 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
私はMQ4を学習しようとしています。私の最初の簡単なプログラムは、2つのMAが交差したときに警告をポップすることになっています。私はなぜ理解することはできません
このコードは動作しません。
どんな助けでも本当に感謝します!よろしくお願いします。
extern int Period_MA1 = 5;
extern int Period_MA2 = 1;
double MA1;
double MA2;
int init()
{
return(0);
}
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
int start()
{
//--------------------------------------------------------------------
MA1=iMA(NULL,0,Period_MA1,0,MODE_SMA,PRICE_CLOSE,0)。
MA2=iMA(NULL,0,Period_MA2,0,MODE_SMA,PRICE_CLOSE,0);; MA2=iMA(NULL,0,Period_MA2,0,MODE_SMA,PRICE_CLOSE,0);
//--------------------------------------------------------------------
if (MA2 == MA1 )
Alert("価格は同じです(",Period_MA2,").");//Alert
を返します。
}こんにちは、Lincoln2012。
このMa Crossのコードをチェック アウトするかもしれません。
私はMQ4を学ぼうとしています。私の最初の簡単なプログラムは、2つのMAが交差したときに警告をポップすることになっています。私はなぜ理解することはできません
このコードはうまくいきません。
}任意の2本のインジケータの クロスをコード化するポイントはこのような考え方です。
1.1. 現在のバーがライン1>ライン2であり、前のバーがライン1<ライン2であれば、Up crossとなる。
2.2. もし、現在のバーline1line2なら、Down crossです。
ハイ
Mt4でちょっとしたプログラミングをしているのですが、これがまた面白い!でもプロではないので、古いインジケーターを編集しているだけです。OK シンプルなインジケータを作りたいんだけど、どうすればいいのかわからないんだ。
そのシンプルなインジケータは、単純に値をチェックし、すべての変数の値が同じであれば、すべての変数の値が一致するポイントを描画するものだ。
私の簡単な解決法
変数があったとします
double moveavg1;
double movingavg12;
double movingavg13; double movingavg13;
double movingavg14;
double moveavg15;
double moveavg16;
double movingavg17;
double moveavg18;
double moveavg19;
double moveavg10;
double movingavgall;
iStochastic(1)を例に挙げていますが、どのようなインジケータでも使用可能です。
移動avg12=iStochastic(1)
moveavg13=iStochastic(2)とします。
.
.
.
ということで
さて
if (movingavg12=movingavg13=movingavg14,...) (put value in variable "movingavgall") //vriaに等しい値を入れる。
バー上にムービングアブガルを描画
応用編
移動平均線3と移動平均線5が同じ値であることを確認したいとします。
RSI 1とRSI 2の値が80の場合、このインジケータはRSIと一緒に使うことができます。
などなど
MTFを追加しても、それはボーナスとして追加されるでしょう。
文章で書くと簡単そうですが、解決策が見つからなかったので、どなたか助けていただければと思います。
私が言っていることが理解できれば幸いです。
しゃい比較する値があれば、次のようなコードを使うことになります。
値が等しいかどうかのチェックは==を使います。 1つの=は変数に値を代入するのに使います。
2つ以上の値を比較する場合は、ANDの意味を持つ&&を使用します。
moveavgall = 0;
if ((a == b) && (b == c) && (c == d)) moveavgall = a;
次に、movingavgall が値を持つかどうかを次のようにして確認します。
if (movingavgall != 0)
{
// ここで何かする
}
Googleでメタトレーダープログラムを検索してください。
MT4でプログラミングをするための良いチュートリアルがいくつか見つかるはずです。
C言語プログラミングの良い本も役に立ちます。
ロバート・ヒル、別名MrPip
このコードを簡略化する
みなさん、こんにちは。
このコードをstringconcatenateコマンドを使用して簡略化しようとしています。
ObjectSetText("uitog1v",StringConcatenate("/\ ", uitog1v, "%"),12, hr1v, DodgerBlue ).を使って、このコードを簡略化しようとしています。
をクリックすると、このようになります。
ObjectSetText("uitog1v",StringConcatenate("/TEINC ", uitog1v,"%","/TEINC ", uitog2v,"%","/TEINC ", uitog3v,"%"),12,StringConcatenate(hr1v,hr2v,hr3v), DodgerBlue ).とすることで、このようになります。
どなたか助けていただけると幸いです。
よろしくお願いします。
doc
トレンド_alexcud_v_2men.mq4
...
ドキュメント
これらの要素がすべて必要な場合、これ以上簡単な書き方はないでしょう。
皆さん、こんにちは。
このコードをstringconcatenateコマンドで簡略化するとこんな感じです。
ObjectSetText("uitog1v",StringConcatenate("/Think ", uitog1v, "%"),12, hr1v, DodgerBlue );
をクリックすると、このようになります。
ObjectSetText("uitog1v",StringConcatenate("/TEINC ", uitog1v,"%","/TEINC ", uitog2v,"%","/TEINC ", uitog3v,"%"),12,StringConcatenate(hr1v,hr2v,hr3v), DodgerBlue ).とすることで、このようにすることが可能です。
どなたか助けていただけると幸いです。
よろしくお願いします。
ドク
トレンド_alexcud_v_2men.mq4方法60秒ごとにアラートを出す
60秒ごとにアラートを出すようなコードを作るにはどうしたらいいですか?
下記のコードを作成しましたが、チャートに貼り付けた時点から1分ごとにアラートが表示されます。
#include
#include
// exported variables
// local variables
double PipValue=1; // this variable is here to support 5-digit brokers
bool Terminated = false;
string LF = "\n"; // use this in custom or utility blocks where you need line feeds
int NDigits = 4; // used mostly for NormalizeDouble in Flex type blocks
int ObjCount = 0; // count of all objects created on the chart, allows creation of objects with unique names
int ExpectedTime2 = 0;
int init()
{
NDigits = Digits;
ObjectsDeleteAll(); // clear the chart
Comment(""); // clear the chart
}
// Expert start
int start()
{
if (Bars < 10)
{
Comment("Not enough bars");
return (0);
}
if (Terminated == true)
{
Comment("EA Terminated.");
return (0);
}
OnEveryTick1();
}
void OnEveryTick1()
{
if (true == false && true) PipValue = 10;
if (true && (NDigits == 3 || NDigits == 5)) PipValue = 10;
OncePerMinutes2();
}
void OncePerMinutes2()
{
int datetime800 = TimeLocal();
if (ExpectedTime2 == 0 || datetime800 > ExpectedTime2 + 60)
{
ExpectedTime2 = datetime800 + 60 * 1; // reset paused time
}
if (datetime800 >= ExpectedTime2 && datetime800 < ExpectedTime2 + 60)
{
ExpectedTime2 = datetime800 + 60 * 1;
Alert3();
}
}
void Alert3()
{
Alert("One minute gone");
}
int deinit()
{
if (true) ObjectsDeleteAll();
}
ドク これらの要素がすべて必要であれば、これ以上シンプルな書き方はないでしょう。
うーん、今回は運が悪かった、とにかくありがとうございます。
よろしくお願いします。
ドク
2番目のStringConcatenateの呼び出しに問題があります。
3つの異なるフォント名を足し合わせているので、有効な結果名はありません。
ロバート
皆さん、こんにちは。
私は、このコードからstringconcatenateコマンドを使用して、このコードを簡略化しようとしています。
ObjectSetText("uitog1v",StringConcatenate("/\ ", uitog1v, "%"),12, hr1v, DodgerBlue );
をクリックすると、このようになります。
ObjectSetText("uitog1v",StringConcatenate("/TEINC ", uitog1v,"%","/TEINC ", uitog2v,"%","/TEINC ", uitog3v,"%"),12,StringConcatenate(hr1v,hr2v,hr3v), DodgerBlue ).とすることで、このようにすることが可能です。
どなたか助けていただけると幸いです。
よろしくお願いします。
ドク
トレンド_alexcud_v_2men.mq4EAのヘルプが必要...テスターで取引が成立しない
EAを作成しているのですが、何をやっても取引を終了させることができません。取引はうまく開くのですが、決済したいときにEAが決済してくれません。
私のEAコードの一部を掲載しますので、経験豊富なコーダーのどなたかがこの問題の原因を解明してくれるかもしれません。buyTrade' と 'sellTrade' という変数はEA全体に対してグローバルです。
注:私は、ロングでもショートでも、常に1つの取引だけをオープンにしておきたいと思っています。取引は「常にある」ので、ロングのシグナルが来たら、既存のショートはクローズされ、逆もまた然りです。
これはやっていません。この取引は、取引を開始し、さらに取引を開始し...さらに取引を開始し...それらがすべて最終的にストップを打つまで、それらを開き続けています。
ありがとうございました。
// Buy signal ---------------------------------------
//if(buyTrade==false || sellTrade==false) {
if (STC_VIDYAprev = 10.00) {
if (sellTrade==true) {
for (int i = OrdersTotal() - 1; i >= 0; i--) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if ( OrderType() == OP_BUY )
{ int OldTicket=OrderTicket(); double lots=OrderLots();}
RefreshRates(); //OrderSelect() needed ?
double symAsk = NormalizeDouble( MarketInfo( Sym, MODE_ASK ), SymDigits );
bool closeSellOrder = OrderClose( OldTicket, lots, symAsk, 0, CLR_NONE );
}
sellTrade = false;
}
if(buyTrade==false) {
EnterLong(Sym, Lots, "");
buyTrade = true;
}
}
//else
//return(0);
// Sell signal ---------------------------------------
if (STC_VIDYAprev > 90.00 && STC_VIDYAcur <= 90.00 ) {
if (buyTrade==true) {
for (int j = OrdersTotal() - 1; j >= 0; j--) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if ( OrderType() == OP_SELL )
{ int oldTicket=OrderTicket(); double lotts=OrderLots();}
RefreshRates(); //OrderSelect() needed ?
double symBid = NormalizeDouble( MarketInfo( Sym, MODE_BID ), SymDigits );
bool closeBuyOrder = OrderClose( oldTicket, lotts, symBid, 0, CLR_NONE );
}
buyTrade = false;
}
if(sellTrade==false) {
EnterShrt( Sym, Lots, "");
sellTrade = true;
}
}
//else
//return(0);...
これは部分的なコードなので、売り注文を閉じるときにsymBidをsymAskに、買い注文を閉じるときにsymAskをsymBidに置き換えてみてください(終値を反転させると、売りを買値で閉じることができず、買いを売値で閉じることができなくなります)。
私はEAに取り組んでいますが、何をやっても取引を終了させることができません。取引はうまく開くのですが、決済したいときにEAが決済してくれません。
私のEAコードの一部を掲載しますので、経験豊富なコーダーのどなたかが、この問題の原因を解明してくれるかもしれません。buyTrade'と'sellTrade'という変数はEA全体に対してグローバルです。
注:私は、ロングでもショートでも、常に1つの取引だけをオープンにしておきたいと思っています。取引は「常にある」ので、ロングのシグナルが来たら、既存のショートはクローズされ、逆もまた然りです。
これはやっていません。この取引は、取引を開始し、さらに取引を開始し...さらに取引を開始し...それらがすべて最終的にストップを打つまで、それらを開き続けています。
事前にありがとうございます。
// Buy signal ---------------------------------------
//if(buyTrade==false || sellTrade==false) {
if (STC_VIDYAprev = 10.00) {
if (sellTrade==true) {
for (int i = OrdersTotal() - 1; i >= 0; i--) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if ( OrderType() == OP_BUY )
{ int OldTicket=OrderTicket(); double lots=OrderLots();}
RefreshRates(); //OrderSelect() needed ?
double symAsk = NormalizeDouble( MarketInfo( Sym, MODE_ASK ), SymDigits );
bool closeSellOrder = OrderClose( OldTicket, lots, symAsk, 0, CLR_NONE );
}
sellTrade = false;
}
if(buyTrade==false) {
EnterLong(Sym, Lots, "");
buyTrade = true;
}
}
//else
//return(0);
// Sell signal ---------------------------------------
if (STC_VIDYAprev > 90.00 && STC_VIDYAcur <= 90.00 ) {
if (buyTrade==true) {
for (int j = OrdersTotal() - 1; j >= 0; j--) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if ( OrderType() == OP_SELL )
{ int oldTicket=OrderTicket(); double lotts=OrderLots();}
RefreshRates(); //OrderSelect() needed ?
double symBid = NormalizeDouble( MarketInfo( Sym, MODE_BID ), SymDigits );
bool closeBuyOrder = OrderClose( oldTicket, lotts, symBid, 0, CLR_NONE );
}
buyTrade = false;
}
if(sellTrade==false) {
EnterShrt( Sym, Lots, "");
sellTrade = true;
}
}
//else
//return(0);