どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 1094

 
alvlaf:

EA をチャート上に手動で配置し、すべてのチャートで MaxOpenOrders 注文または TOTAL MaxOpenOrders 注文を開かせたいのですか?また、注文は成行だけなのか、指値・逆指値を含むすべてなのか?

 
A13ksandr:

EA をチャート上に手動で配置し、すべてのチャートで MaxOpenOrders 注文または TOTAL MaxOpenOrders 注文を開かせたいのですか?また、注文は成行だけなのか、指値・逆指値を含むすべてなのか?

すべての商品の注文を開始するために必要です。MaxOpenOrdersが1だとすると、成行注文を1つだけ開くはずです。これはバイナリーオプション用のボットで、保留中の注文は ありません。しかし、それはシリーズで動作します、ポジションが損失でクローズされた場合、次に同じポジションが、より大きなロットでのみ開かれ、シリーズが有益な取引で終了するまで、他の金融商品のために取引を開いてはいけません。
 
A13ksandr:
この戦略では」という言葉は、どのような目的で使われているのでしょうか。アカウントに手動取引がある場合、または別のEAが実行されている場合、これらの注文に触れないようにするためにマジックが必要です。そうだと思います。
A13ksandr さん、ありがとうございます。私もデバッグ時にマジックを変更して、負けが続くのを待たないようにしています。 それに、マジックを削除しただけでは、ボットの動作 のアルゴリズムは変わりません。手動でそこに注文を出すつもりはない。
 
alvlaf:
すべてのシンボルに対して開く必要がある。MaxOpenOrdersが1であるとすると、1つの成行注文のみを開く必要があります。これはバイナリーオプション用のボットで、保留中の注文はありません。しかし、それはシリーズで動作します、ポジションが損失でクローズされた場合、次に同じポジションが、より大きなロットでのみ開かれ、シリーズが有益な取引で終了するまで、他の金融商品のために取引を開いてはいけません。

なるほど、バイナリーオプションの部分は見逃していました。同じEAを手動で異なるチャートに固定しても、なぜか異なるEAを実行しているとカウントされるようです。そして、すべてのチャートに対して、1つのオプションが実行されます(まあ、正常に動作している場合ですが)。私自身は初心者なので間違っているかもしれません。このように私のEAでは多通貨を考えています。

input string TradeSymbols = "EURUSD, GBPUSD, AUDUSD, NZDUSD, USDCAD, USDCHF, GBPCAD"; // 取引のためのシンボル

string Symbols[50]; // 50はシンボルの最大数です。

int SymbolCount;

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

int OnInit()

{

if (IsTesting() || !ExtractSymbols())

{

SymbolCount = 1;

Symbols[0] = Symbol()。

}

return(INIT_SUCCEEDED);

}

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

bool ExtractSymbols()

{

ushort Comma = StringGetCharacter(",", 0);

SymbolCount = StringSplit(TradeSymbols, Comma, Symbols)。

for (int i = 0; i < SymbolCount; i++)

{

StringToUpper(Symbols[i])。

Symbols[i] = StringTrimRight(Symbols[i]); // 誤ってスペースが入らないようにするため

Symbols[i] = StringTrimLeft(Symbols[i])とする。

}

if (SymbolCount > 0) return(true);

return(false)です。

}

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

void OnTick()

{

for (int i = 0; i < SymbolCount; i++)

{

double LastAsk = SymbolInfoDouble(Symbols[i], SYMBOL_ASK);

double LastBid = SymbolInfoDouble(Symbols[i],SYMBOL_BID);

// といった具合に...。

}

}

任意のチャートにEAを適用する場合。こうすることで、すべてのチャートでMaxOpenOrdersが正確になります。

 
// といった具合に...。- というか、EAそのものの古いコードまで続いているのでしょうか?
 
A13ksandr:

なるほど、バイナリーオプションの部分は見逃していました。同じEAを手動で異なるチャートに固定しても、なぜか異なるEAを実行しているとカウントされるようです。そして、すべてのチャートに対して、1つのオプションが実行されます(まあ、正常に動作している場合ですが)。私自身は初心者なので間違っているかもしれません。このように私のEAでは多通貨を考えています。

input string TradeSymbols = "EURUSD, GBPUSD, AUDUSD, NZDUSD, USDCAD, USDCHF, GBPCAD"; // 取引のためのシンボル

string Symbols[50]; // 50はシンボルの最大数です。

int SymbolCount;

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

int OnInit()

{

if (IsTesting() || !ExtractSymbols())

{

SymbolCount = 1;

Symbols[0] = Symbol()。

}

return(INIT_SUCCEEDED);

}

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

bool ExtractSymbols()

{

ushort Comma = StringGetCharacter(",", 0);

SymbolCount = StringSplit(TradeSymbols, Comma, Symbols)。

for (int i = 0; i < SymbolCount; i++)

{

StringToUpper(Symbols[i])。

Symbols[i] = StringTrimRight(Symbols[i]); // 誤ってスペースが入らないようにするため

Symbols[i] = StringTrimLeft(Symbols[i])とする。

}

if (SymbolCount > 0) return(true);

return(false)です。

}

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

void OnTick()

{

for (int i = 0; i < SymbolCount; i++)

{

double LastAsk = SymbolInfoDouble(Symbols[i], SYMBOL_ASK);

double LastBid = SymbolInfoDouble(Symbols[i], SYMBOL_BID);

// といった具合に...。

}

}

任意のチャートにEAを適用する場合。こうすることで、すべてのチャートでMaxOpenOrdersが正確になります。

このコードはMQL5で書かれているのでしょうか?
 
A13ksandr:
if (DayOfWeek() == 1) Price = iOpen(Symbol(), PERIOD_D1, 4);
if (DayOfWeek() >= 2) Price = iOpen(Symbol(), PERIOD_D1, DayOfWeek() - 2);

そして、次の週がなくなっている、と私はまだ先週の火曜日のバーのオープニング価格 からレポートを維持する必要がある場合? つまり、私は火曜日のバーのオープニング価格を決定するEAを必要とし、そこから必要なだけ、例えば - 週、2、月、など開始しました。

ありがとうございます。

 
yaaarik777:

来週が始まり、まだ先週の火曜日のバーのオープン価格からレポートする必要がある場合はどうすればよいですか?つまり、Expert Advisorが火曜日のバーのオープン価格を決定し、それを1週間、2週間、1ヶ月など、必要なだけ使用する必要があるのです。

ありがとうございます。

そして、特定の日付を設定すると、プログラムがその日の 値を取るので、さらに簡単です。

 
evillive:

そして、特定の日付を設定すると、プログラムがその日の始値を取るので、さらに簡単です。

コードがわからないのですが、助けてもらえますか?

火曜日の最初のバーの始値の 計算はOnInit()に実装して、起動時に計算してEAを再起動するまで記憶しておくというのは可能でしょうか?

無意味なことを書いていたらごめんなさい、勉強中なんです)

 
yaaarik777:

コードがわからないのですが、助けてもらえますか?

火曜日の最初のバーの価格をOnInit()で計算し、起動時に価格を計算し、EAを再起動するまで記憶しておくということでいいでしょうか。

書いていたらごめんなさい、勉強中です)

その日の最初のバーの始値=その日のバーの始値となります。後で値を再計算する必要がなければ、Initeでも可能です。

コードの内容はおおよそ以下の通りです。

input datetime dayz=D'2016.09.06 00:00'; //зададим прошлый вторник, начало суток

int bar_dayz=0;
double price_dayz=0;

int OnInit()
{
////...
bar_dayz=iBarshift(_Symbol,PERIOD_D1,dayz); 
price_dayz=iOpen(_Symbol,PERIOD_D1,bar_dayz);
///...
}