Yedelkin: Для каждого вида торгового запроса предусмотрены обязательные поля. Они должны быть заполнены. "Открытие позиции" или "Закрытие позиции" - это всего лишь результат выполнения конкретного торгового запроса, правила заполнения которого - одни и те же. Т.е. берите свой работающий вариант запроса "на открытие" и меняйте тип ордера. Ненужные обязательные поля заполняйте нулями.
MqlTick latest_price; // Будет использоваться для текущих котировокif(!SymbolInfoTick(_Symbol,latest_price)) return; // получить текущее значение котировки в структуру типа MqlTick
...
if(uBuy && opSell==false)
{
if(opBuy) return; // при наличии позиции не добавлять к открытой позиции на покупку
mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
mrequest.price = NormalizeDouble(latest_price.ask,_Digits); // последняя цена ask
mrequest.sl = NormalizeDouble(latest_price.ask - StopLoss*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble(latest_price.ask + TakeProfit*_Point,_Digits); // Take Profit
mrequest.symbol = _Symbol; // символ
mrequest.volume = WorkLot; // количество лотов для торговли
mrequest.magic = EA_Magic; // Magic Number
mrequest.type = ORDER_TYPE_BUY; // ордер на покупку
mrequest.type_filling = ORDER_FILLING_FOK; // тип исполнения ордера - все или ничего
mrequest.deviation=Slippage; // проскальзывание от текущей ценыOrderSend(mrequest,mresult); // отсылаем ордерif(mresult.retcode==10009 || mresult.retcode==10008) //запрос выполнен или ордер успешно помещен
{
Alert("Ордер Buy успешно помещен, тикет ордера #:",mresult.order,"!!");
}
else
{
return;
}
}
double summ=0;//переменная, в которую все суммируется
int w=0;//счетчик 3 удачных сумирований
int count_for_buf=0;//Счетчик переходов по буферу ZigZag
while (w<=3)
{
summ=summ+ZigzagBuffer[rates_total-count_for_buf];
count_for_buf++;
if (ZigzagBuffer[rates_total-count_for_buf]!=0)//Увеличиваем счетчик, если используемое значение индикатора не равно нулю
{
w++;
}
}
double summ=0; //переменная, в которую все суммируетсяint w=0; //счетчик 3 удачных сумированийfor(int i=0; i<rates_total; i++)
{
if(ZigzagBuffer[rates_total]!=0 && w<3)//Увеличиваем счетчик, если используемое значение индикатора не равно нулю
{
summ+=ZigzagBuffer[i];
w++;
}
if(w>2) break;
}
クロージングを除くすべてのオプションを掲載しています。だから聞いているんです。
は、もうお分かりですね。
"ポジションを閉じる "というのは、あくまでも取引依頼の結果であり、そのルールは同じです。
例えば、"open "のリクエストを受け取り、オーダータイプを変更する。
不要な必須項目はゼロで埋めてください。
Yedelkin:
セルゲイДля каждого вида торгового запроса предусмотрены обязательные поля. Они должны быть заполнены. "Открытие позиции" или "Закрытие позиции" - это всего лишь результат выполнения конкретного торгового запроса, правила заполнения которого - одни и те же. Т.е. берите свой работающий вариант запроса "на открытие" и меняйте тип ордера. Ненужные обязательные поля заполняйте нулями.
すでに回答済みです
ありがとうございました。
もう一つ質問があります。以下のリクエストが送信され、ポジションが開設されましたが、ストップとプロフィットが設定されていません。すでにいろいろな設定を試しましたが、何も解決しませんでした。何が問題なのか、何が間違っているのか。
ZigZagの最後の3つの値を足すにはどうしたらいいですか?
この方法では、何らかの理由でハングアップしたり、他のことが起こったりします。ポジションを開く」というトレードのリクエストには、いくつかのオプションがあることを思い出してください。これらのオプションには、sl/tpを伴うものと伴わないものがあります。言い換えれば、あなたのブローカーはどのような取引モードを持っているのでしょうか?
ポジションを開く」というトレードのリクエストには、いくつかのオプションがあることを思い出してください。これらのオプションには、sl/tpを伴うものと伴わないものがあります。つまり、あなたのブローカーの取引モードは何ですか?
アルパリ・ブローカー手動モードでは、取引所執行で新規注文のみが発注されます。市場から参入する以外の選択肢はない。私は、これが交換実行の要求であることを理解しています。ありがとうございます、整理しました。コンパイラが以下のコードを処理する理由を教えてください。
if(CopyBuffer(ema,0,0,3,emaVal)<0) return; // インジケータバッファの新しい値を配列にコピーします。
и
IndicatorRelease(ema)です。
タイプ変換によりデータが失われる可能性があります」という警告が表示される。どこが悪いのか、昨日の夕方から直らないんです。
if(CopyBuffer(ema,0,0,3,emaVal)<0) return; // 新しい指標バッファの値を配列にコピーする
и
IndicatorRelease(ema)です。
タイプ変換によりデータが失われる可能性があります」という警告が表示される。何が悪いのか、昨日の夕方からどうにもこうにも解決しない。
emaはどのような変数ですか?
了解です。インジケータハンドルを格納するためにどのような種類の変数を使用すべきかを確認し、それに合わせる。
ZigZagの最後の3つの値をどのように足し算するのですか?
この方法では、何らかの理由でハングアップしたり、他のことが起こったりします。私の提案をお伝えします。