// 証券の未決済注文の数を数える int CountOrder=0; for (int j=0; j<OrdersTotal(); j++) if (OrderSelect(j,SELECT_BY_POS,MODE_TRADES) if (OrderSymbol()==Symbol())CountOrder++;
// 最後に閉じたポジションの バー番号、またはまだ開いていない場合は-1 int BarLast=BarLastClosePose();
и
// 最後に閉じた位置のバー番号 int BarLastClosePose() { datetime t; int i;
for (i=0; i<OrdersHistoryTotal(); i++) { if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) { //if (OrderMagicNumber()!=Magic) continue; if (OrderSymbol()!=Symbol()) continue; if (OrderType()>1) continue; if (t<OrderCloseTime()) t=OrderCloseTime(); }. }
int start()
{
//---- int total,ticket; //объявил тотал и тикет int signal = signal_MACD(); //сигнал МАКД передает значение в сигнал
AnalyzeSignal(signal); //аналайз сигнал анализирует сигналint MACD[8] = {0,1,2,3,4,5,6,7}; //создал одномерный массив МАКД
MACD[0] = iMACD(Symbol(),1,5,34,5,PRICE_CLOSE,MODE_MAIN,7);
///Бла-бла-бла
MACD[7] = iMACD(Symbol(),1,5,34,5,PRICE_CLOSE,MODE_MAIN,0);
total = OrdersTotal(); //тотал считает ордера///Тут большая жирная закрывающая скобка, если конечно следующая строчка это функцияint signal_MACD()
同志よ、助けてくれ...。簡単なコードを書いたのですが、コンパイル時に括弧のバランスが崩れていると言われました。
考え方は簡単で、MACDが7分以内に0を上回った(または下回った)場合、ポジションをオープンします。
この機能を確認する
P.S.どうしたらこんなにきれいにスクリプトが描けるのでしょうか?
答えを書くときにSRCボタンがあります。
括弧については、私は閉じ括弧が何を指すかを指定する習慣があります
}//for
}// (シグナル...)
また、括弧については、閉じたものが何を指しているのかを指定する習慣があります
}//for
}// (シグナル...)
"to taste and color..." - しかし、この方法は、不必要な情報でコードをオーバーロードする+余計な行を書くのに時間がかかる+深いネストの問題を解決しない(レベルの番号付け?)
より良いコード構造 - 上の例のように
こんにちは、1つの注文を開いた後、同じローソク足で2つ目の注文を開くことができないように条件を記述する方法を教えてください。を書かせていただいています。
ったら&& CountOrder<2 && (BarLast>1 || BarLast==-1))
{
OrderSend(Symbol(),OP_BUY,MinLot,Ask,0,VStopLossLong,0, "BUY: ",MagicL,0,Green");
}
どこ
// 証券の未決済注文の数を数える
int CountOrder=0;
for (int j=0; j<OrdersTotal(); j++)
if (OrderSelect(j,SELECT_BY_POS,MODE_TRADES)
if (OrderSymbol()==Symbol())CountOrder++;
// 最後に閉じたポジションの バー番号、またはまだ開いていない場合は-1
int BarLast=BarLastClosePose();
и
// 最後に閉じた位置のバー番号
int BarLastClosePose()
{
datetime t;
int i;
for (i=0; i<OrdersHistoryTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
{
//if (OrderMagicNumber()!=Magic) continue;
if (OrderSymbol()!=Symbol()) continue;
if (OrderType()>1) continue;
if (t<OrderCloseTime()) t=OrderCloseTime();
}.
}
return (iBarShift(Symbol(),Period(),t,true));
}
この機能を確認する
Vinin、検証済み、この機能ではすべてうまくいっています...。return(0)は開始関数を指し、return'yに付いている括弧を除くと14個の括弧になる...。片道7本
Vinin、検証済み、この機能ではすべてうまくいっています...。return(0)は開始関数を指し、return'yに付いている括弧を数えないと、14個の括弧になります...。片道7本。
各関数を別ファイルにコピーし、コンパイルの検証を行うことが有効です。
括弧が正しければ、スタートが終わり、MACDシグナルが始まる場所を示す。
各関数を別ファイルにコピーし、コンパイルの検証を行うことが有効です。
括弧が正しい場合、スタートが終わり、MACDシグナルが始まる場所を示す。
ふむint signal_MACD()は確かに関数ですが...。しかし、なぜスタート関数の後ろでなければならないのでしょうか。ある関数はスタートの外側に、ある関数は内側に書かれているのか、正直言って理解できません...。何が違うのでしょうか?