どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 1069 1...106210631064106510661067106810691070107110721073107410751076...1178 新しいコメント владимир 2016.07.01 09:51 #10681 CloseAllBuy()はOnTick()関数内でif(Bid>buycloseprice) CloseAllBuy()という条件で一箇所だけ呼ばれています。この条件は新しくオンになったときにもオフになったときにも来ていませんが、EAを再びオンにしたときにCloseAllBuy()関数がトリガーされました。 Vitalie Postolache 2016.07.01 09:57 #10682 rapid_minus: CloseAllBuy()はOnTick()関数内でif(Bid>buycloseprice) CloseAllBuy()という条件で一箇所だけ呼び出されています。この条件は新しい有効化では発生せず、無効化期間でも発生しませんでしたが、EAを再び有効にするとCloseAllBuy()関数がトリガーされました。 コードはあるのでしょうか?buyclosepriceとは何か、どこから来たのか、何で初期化されたのか、どこで変更されたのか、ここからは分からない...。 владимир 2016.07.01 10:11 #10683 以下はコードの一部です。 владимир 2016.07.01 10:13 #10684 SRCが挿入されているかどうか、なぜかわからない。そうでない場合は、テキストで繰り返しますので、お知らせください。 владимир 2016.07.01 10:36 #10685 Question: この場合、具体的にどのようにグローバル変 数を適用 すればよいのか、アドバイスをお願いします。解らないんです。ありがとうございます。 Vitalie Postolache 2016.07.01 10:40 #10686 rapid_minus: 以下はコードの一部です。が表示されない。rapid_minus さん 質問: この場合、具体的にどのようにグローバル変数を適用 すればよいのか、アドバイスをお願いします。私には理解できない。ありがとうございます。ドキュメントを読むターミナルのグローバル変数、メタエディタのヘルプを確認する、そちらの方が更新が早いです。また、重要な変数の設定や値をファイルに保存しておき、読み込み時にそこから読み込むことも可能です。しかし、ほとんどの場合、このようなことをしなくても、頭を使い、正しいロジックをコードに組み込めばよいのです。 владимир 2016.07.01 10:46 #10687 テキストで繰り返す。RefreshRates()。 total=OrdersTotal(); if(total>0){ for(int i=0; i<=OrdersTotal(); i++) if(OrderSelect(i,SELECT_BY_POS)==true){ if(OrderType()==OP_BUY && OrderMagicNumber()==magic){ RefreshRates(); if(Bid>buycloseprice) CloseAllBuy();} if(OrderType()==OP_SELL && OrderMagicNumber()==magic){ RefreshRates(); if(Ask<sellcloseprice) CloseAllSell();}}} if((total==0) || (total>0 && OrderSelect(1,SELECT_BY_POS,MODE_TRADES)==true && OrderSymbol())!=Symbol()){ Comment("未決済ポジション なし"); if(condition && timeBar!=iTime(Symbol(),Period(),1)){ Print("Criterion-1 for BAY has appeared"); int poz_1 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue); Sleep(1000); RefreshRates(); int poz_2 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue).Of.Poz_3 = OrderSend(Symbol(),OP_BUY,Lot,Ask,slip,0,NULL,magic,Blue); Sleep(1000); RefreshRates(); int poz_3 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue); Sleep(1000). RefreshRates(); int poz_4 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue); Sleep(1000); RefreshRates(); int poz_5 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue); timeBar=iTime(Symbol(),Period(),1); double spread = (Ask-Bid); buyopentime = iTime(Symbol(),Period(),0); buycloseprice = NormalizeDouble((iOpen(Symbol(),Period(),0)+spread+75*Point),Digits).Buycloseprice = NormalizeDouble((iOpen(Symbol(),Period(),0)+spread+75*Point),Digits); Comment("Magic 510015 BAY"); Print("CLOSE PRICE = ",buycloseprice);}.} } //+----------------------------------------------------------------------------+*/ void CloseAllBuy(){ bool fc; for (int i=OrdersTotal()-1; i>=0; i--).{ if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if (OrderType()==OP_BUY) 。{ fc=OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),slip); buycloseprice=0.0; tc=OrderCloseTime();}.}} Any rookie question, so 10ポイント 3.mq4 [ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you владимир 2016.07.01 10:51 #10688 では、私のコードのどこに間違いがあるのでしょうか? Vitalie Postolache 2016.07.01 10:59 #10689 rapid_minus: テキストで繰り返す。buyclosepriceが どこから来るのか、条件の前に何が起こるのか、まだ明確ではありませんif(Bid>buycloseprice) CloseAllBuy();. 私はこれだけを見ているので、後 - buycloseprice = NormalizeDouble((iOpen(Symbol(), Period(), 0)+spread+75*Point), Digits); しかし、どこでこのbuyclosepriceが 宣言され、どのように初期化されているのでしょうか? これが買い注文の 終値のはずだとすると、トリガーされた後に変数に値が渡され、それ以前に何が入っていたのかが示されていないので、ここでロジックが破綻しています。さて、ちょっとした算数ですが、コードの中にこのようなループがあります。for(int i=0; i<=OrdersTotal(); i++)例えば、0から4までの5つのオーダーがあるとします。ループは0から5までカウントされます。このループは正しく動作していますか?また、if(condition && timeBar!=iTime(Symbol(),Period(),1)) の行で、conditionと timeBarは どこから来ているのでしょうか。 Any rookie question, so アドバイザーの戦略リファイン [ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. владимир 2016.07.01 11:07 #10690 私は理解したと思います - エラーは、私はグローバルbuyclosepriceを設定し、すぐにそれに0.0の値を与えることです。そして、その後、ポジションを開く ときに特定の値を取りますが、この値はターミナルのスイッチを切ると失われ、スイッチを入れると元の値、つまり0.0を取り、それぞれif(Bid>buycloseprice)の条件が尊重されてクローズの命令を出します。 しかし、この変数をグローバルターミナルにどのように転送するのか、私は理解しておりません。 1...106210631064106510661067106810691070107110721073107410751076...1178 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
CloseAllBuy()はOnTick()関数内でif(Bid>buycloseprice) CloseAllBuy()という条件で一箇所だけ呼び出されています。この条件は新しい有効化では発生せず、無効化期間でも発生しませんでしたが、EAを再び有効にするとCloseAllBuy()関数がトリガーされました。
以下はコードの一部です。
が表示されない。
質問: この場合、具体的にどのようにグローバル変数を適用 すればよいのか、アドバイスをお願いします。私には理解できない。ありがとうございます。
ドキュメントを読むターミナルのグローバル変数、メタエディタのヘルプを確認する、そちらの方が更新が早いです。
また、重要な変数の設定や値をファイルに保存しておき、読み込み時にそこから読み込むことも可能です。
しかし、ほとんどの場合、このようなことをしなくても、頭を使い、正しいロジックをコードに組み込めばよいのです。
total=OrdersTotal();
if(total>0)
{
for(int i=0; i<=OrdersTotal(); i++)
if(OrderSelect(i,SELECT_BY_POS)==true)
{
if(OrderType()==OP_BUY && OrderMagicNumber()==magic)
{ RefreshRates();
if(Bid>buycloseprice) CloseAllBuy();
}
if(OrderType()==OP_SELL && OrderMagicNumber()==magic)
{ RefreshRates();
if(Ask<sellcloseprice) CloseAllSell();
}
}
}
if((total==0) || (total>0 && OrderSelect(1,SELECT_BY_POS,MODE_TRADES)==true && OrderSymbol())!=Symbol())
{
Comment("未決済ポジション なし");
if(condition && timeBar!=iTime(Symbol(),Period(),1))
{
Print("Criterion-1 for BAY has appeared");
int poz_1 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue);
Sleep(1000);
RefreshRates();
int poz_2 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue).Of.Poz_3 = OrderSend(Symbol(),OP_BUY,Lot,Ask,slip,0,NULL,magic,Blue);
Sleep(1000);
RefreshRates();
int poz_3 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue);
Sleep(1000).
RefreshRates();
int poz_4 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue);
Sleep(1000);
RefreshRates();
int poz_5 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue);
timeBar=iTime(Symbol(),Period(),1);
double spread = (Ask-Bid);
buyopentime = iTime(Symbol(),Period(),0);
buycloseprice = NormalizeDouble((iOpen(Symbol(),Period(),0)+spread+75*Point),Digits).Buycloseprice = NormalizeDouble((iOpen(Symbol(),Period(),0)+spread+75*Point),Digits);
Comment("Magic 510015 BAY");
Print("CLOSE PRICE = ",buycloseprice);
}.
}
}
//+----------------------------------------------------------------------------+*/
void CloseAllBuy()
{
bool fc;
for (int i=OrdersTotal()-1; i>=0; i--).
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if (OrderType()==OP_BUY)
。{
fc=OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),slip);
buycloseprice=0.0;
tc=OrderCloseTime();
}.
}
}
テキストで繰り返す。
buyclosepriceが どこから来るのか、条件の前に何が起こるのか、まだ明確ではありませんif(Bid>buycloseprice) CloseAllBuy();. 私はこれだけを見ているので、後 - buycloseprice = NormalizeDouble((iOpen(Symbol(), Period(), 0)+spread+75*Point), Digits); しかし、どこでこのbuyclosepriceが 宣言され、どのように初期化されているのでしょうか?
これが買い注文の 終値のはずだとすると、トリガーされた後に変数に値が渡され、それ以前に何が入っていたのかが示されていないので、ここでロジックが破綻しています。
さて、ちょっとした算数ですが、コードの中にこのようなループがあります。
for(int i=0; i<=OrdersTotal(); i++)
例えば、0から4までの5つのオーダーがあるとします。ループは0から5までカウントされます。このループは正しく動作していますか?
また、if(condition && timeBar!=iTime(Symbol(),Period(),1)) の行で、conditionと timeBarは どこから来ているのでしょうか。