[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 1095

 
私はすぐに指標なしでEAを書かなかった、そこに指標はなく、ちょうど売買注文など---その後、テスターで変更されている期間と最終結果は、私はまだ理解していない何もありません。
 
5drakon:
私はすぐに指標なしでEAを書かなかった、そこに指標はなく、ちょうど売買注文など---その後、テスターで変更されている期間と最終結果は、私はまだ理解していない何もありません。

Expert Advisor本体がないと何も言えません。あくまで推測ですが。
 

Ilan6がトレードを始めるにはどうしたらいいのでしょうか?いくらで動き出すのか、1セントでも動くのか?

 
5drakon:
私はすぐに指標なしでEAを書かなかった、そこに指標はなく、ちょうど売買注文など---その後、テスターで変更されている期間と最終結果は、私はまだ理解していない何もありません。

そうですね、コードそのものを見るべきですね。何らかのストラテジーがあり、その計算に基づいて注文を出したり閉じたりしているのではないですか?
 

どこが間違いなのか、教えてください。金融商品を売るための 成行注文が あればそれを決済し、買うための注文がなければ買うための注文を1つ出します。ここでは閉じることですべてが正常に行われますが、一度だけでなく、刻々と開いていきます。

//--------------------------------------------------------------------------------------------

extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
int sells=0;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
sells++;
}
}
if (sells==0)
{
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
//--------------------------------------------------------------------------------------------

 
kolyango:

どこが間違いなのか、教えてください。金融商品を売るための成行注文があればそれを決済し、買うための注文がなければ買うための注文を1つ出します。ここは閉じて正常なのですが、一度だけでなく、刻々と開いていくのです。

//--------------------------------------------------------------------------------------------

extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
int sells=0;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
sells++;
}
}
if (sells==0)
{
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
//--------------------------------------------------------------------------------------------


それとも、そうするのが良いのでしょうか?売り注文が ない場合は、買い注文は出しません。

extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
}
//--------------------------------------------------------------------------------------------

 

for文の実行ルール


for文に 制御を渡すとき、Expression_1を実行する。for文のConditionがtrueのとき:ループ本体の最初の文に制御を渡し、ループ本体のすべての文が実行された後、Expression_2を実行し、ヘッダに制御を渡してConditionがtrueかどうかをチェックする。for文のConditionがfalseの場合:for文の後に続く文に制御を移す。

1ティックが来た、for演算子の条件が真、制御がさらに渡される - これらはすべて1ティックの間に起こります。

extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
}
//--------------------------------------------------------------------------------------------

あるいは、このティックの間にどの演算子が実行されるかを正確に教えてください。上記のすべて、または次のティックの間に実行されるのはどれですか?説明...

 
kolyango:

for文の実行ルール


for文に制御を渡すとき、Expression_1を実行する。for文のConditionがtrueのとき:ループ本体の最初の文に制御を渡し、ループ本体のすべての文が実行された後、Expression_2を実行し、ヘッダに制御を渡してConditionがtrueかどうかをチェックする。for文のConditionがfalseの場合:for文の後に続く文に制御を移す。

1ティックが来た、for演算子の条件が真、さらに制御が渡される - これらはすべて1ティックの間に起こる、つまりこれらの演算子が1ティックの間に実行されるかどうか教えてください。

あるいは、このティックの間にどの演算子が実行されるかを正確に教えてください。上記のすべて、または次のティックの間に実行されるのはどれですか?説明...


start()関数は、最初のティックが到着したときに実行されます。関数実行中に他のtickが到着した場合、それらはスキップされます。

スタート機能は、そのロジックに従って完全に実行されます。

 
kolyango:

for文実行のルール


for文に制御を渡すとき、式_1を実行する。 for文のConditionが真のとき、ループ本体の最初の文に制御を渡し、ループ本体のすべての文が実行された後、式_2を実行し、Conditionが真であるかどうかを確認するためにヘッダに制御を渡す。 for文のConditionがfalseの場合:for文の後に続く文に制御を移す。

1ティックが来た、for演算子の条件が真、さらに制御が渡される - これらはすべて1ティックの間に起こる、つまりこれらの演算子が1ティックの間に実行されるかどうか教えてください。

extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
}
//--------------------------------------------------------------------------------------------

あるいは、このティックの間にどの演算子が実行されるかを正確に教えてください。上記のすべて、または次のティックの間に実行されるのはどれですか?説明...


把握しました。条件が満たされた場合、すべての演算子が実行されます。
 
このコードで、すでに買い注文があるかどうかを確認してから買うようにするにはどうしたらよいでしょうか。成行買い注文が ない場合、その時だけ買いを実行する?