#property description"Example of placing pending orders"#property script_show_inputs#define EXPERT_MAGIC 123456// MagicNumber of the expertinputENUM_ORDER_TYPE orderType=ORDER_TYPE_BUY_LIMIT; // order type//+------------------------------------------------------------------+//| Placing pending orders |//+------------------------------------------------------------------+voidOnStart()
{
//--- declare and initialize the trade request and result of trade requestMqlTradeRequest request={0};
MqlTradeResult result={0};
//--- parameters to place a pending order
request.action =TRADE_ACTION_PENDING; // type of trade operation
request.symbol =Symbol(); // symbol
request.volume =0.1; // volume of 0.1 lot
request.deviation=2; // allowed deviation from the price
request.magic =EXPERT_MAGIC; // MagicNumber of the orderint offset = 50; // offset from the current price to place the order, in pointsdouble price; // order triggering pricedouble point=SymbolInfoDouble(_Symbol,SYMBOL_POINT); // value of pointint digits=SymbolInfoInteger(_Symbol,SYMBOL_DIGITS); // number of decimal places (precision)//--- checking the type of operationif(orderType==ORDER_TYPE_BUY_LIMIT)
{
request.type =ORDER_TYPE_BUY_LIMIT; // order type
price=SymbolInfoDouble(Symbol(),SYMBOL_ASK)-offset*point; // price for opening
request.price =NormalizeDouble(price,digits); // normalized opening price
}
elseif(orderType==ORDER_TYPE_SELL_LIMIT)
{
request.type =ORDER_TYPE_SELL_LIMIT; // order type
price=SymbolInfoDouble(Symbol(),SYMBOL_ASK)+offset*point; // price for opening
request.price =NormalizeDouble(price,digits); // normalized opening price
}
elseif(orderType==ORDER_TYPE_BUY_STOP)
{
request.type =ORDER_TYPE_BUY_STOP; // order type
price =SymbolInfoDouble(Symbol(),SYMBOL_ASK)+offset*point; // price for opening
request.price=NormalizeDouble(price,digits); // normalized opening price
}
elseif(orderType==ORDER_TYPE_SELL_STOP)
{
request.type =ORDER_TYPE_SELL_STOP; // order type
price=SymbolInfoDouble(Symbol(),SYMBOL_ASK)-offset*point; // price for opening
request.price =NormalizeDouble(price,digits); // normalized opening price
}
elseAlert("This example is only for placing pending orders"); // if not pending order is selected//--- send the requestif(!OrderSend(request,result))
PrintFormat("OrderSend error %d",GetLastError()); // if unable to send the request, output the error code//--- information about the operationPrintFormat("retcode=%u deal=%I64u order=%I64u",result.retcode,result.deal,result.order);
}
//+------------------------------------------------------------------+
#property copyright""#property link""#property version""#property indicator_chart_window//+----------------------------------------------+//| Входные параметры индикатора |//+----------------------------------------------+inputENUM_TIMEFRAMES TF=PERIOD_M5;
int LastCountBar;
datetime tt;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total, // количество истории в барах на текущем тикеconstint prev_calculated,// количество истории в барах на предыдущем тикеconstdatetime &time[],
constdouble &open[],
constdouble& high[], // ценовой массив максимумов цены для расчёта индикатораconstdouble& low[], // ценовой массив минимумов цены для расчёта индикатораconstdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
datetime IndTime[1];
//--- объявления локальных переменныхint limit,bar;
//--- индексация элементов в массивах как в таймсерияхArraySetAsSeries(time,true);
//--- расчёт стартового номера first для цикла пересчёта баровif(prev_calculated>rates_total || prev_calculated<=0) // проверка на первый старт расчёта индикатора
{
limit=100; // стартовый номер для расчёта всех баров
LastCountBar=limit;
}
else
limit=LastCountBar+rates_total-prev_calculated; // стартовый номер для расчёта новых баров//--- основной цикл расчёта индикатораfor(bar=limit; bar>=0; bar--)
{
//--- копируем вновь появившиеся данные в массив IndTimeif(CopyTime(Symbol(),TF,time[bar],1,IndTime)<=0)
return(0);
if(time[bar]>=IndTime[0] && time[bar+1]<IndTime[0])
{
LastCountBar=bar;
//--- Далее проводим вычисления индикатора МТФ ...............Print(bar," ",IndTime[0]);
//---
}
}
return(rates_total);
}
//+------------------------------------------------------------------+
enum_trade_request_actions
識別子
商品説明
トレード_アクション_ディール
指定したパラメータで即時約定する取引注文を発注する(成行注文)
取引アクションの保留
指定された条件下で執行するための取引注文を出す(保留注文)
TRADE_ACTION_PENDING 保留注文の取引操作の例。
enum_trade_request_actions
識別子
商品説明
トレード_アクション_ディール
指定したパラメータで即時約定する取引注文を発注する(成行注文)
取引アクションの保留
指定された条件下で執行するための取引注文を出す(保留注文)
ありがとうございました。
TRADE_ACTION_PENDING 保留注文の取引操作の例。
ウラジミール、ロシア語で書けないの?
無理でしょう。参考文献から全文引用したからです。そうでなければ、長丁場になる。誰もが「チケット」を持っているし、「チケット」を持っている人もいる。そのため、機能、ヘルプ、ヘルプからの引用は英語になっています。
無理でしょう。参考文献を全文引用したからです。そうでなければ、長丁場になる。誰もが「チケット」を持っているし、「チケット」を持っている人もいる。そのため、機能、参考資料、参考資料からの引用は英語で行っています。
皆さん、こんにちは。主にプロに向けた質問だと思います(結果論ですが)。コードについての質問が1つで1週間が経ちました。
例えば - 私たちは、M5キャンドルは5キャンドルM1(例えば、00:00、00:01、00:02、00:03と00:04)が含まれていることを知っている。さらに、この組み合わせだけを考えてみます。つまり、M1でインジケータを実行し、M5からのインジケータの読み取りを 見たいとします。
つまり、下のバーのデータを正しく表示するには、下のバーの5本のバーをすべてループさせて表示させればよいのです。例えば、最初のバーが00:00、次に00:01など00:04まで現れ、その後に次のバーが現れる。 つまり、周期は0から4までで、これは最大であり、履歴のギャップは考慮されない。問題は、0から5までのサイクルを得ることで、4まで作るにはロジックが足りないのです信じてください、もう1週間も悩んでいるんです、本当にお願いします。以下は、ループが4ではなく5になるような、非常に切り詰めたコードです。4にしてほしい!!!!!!!
リストビューの編集画面を追加するにはどうしたらいいですか?
https://www.mql5.com/en/docs/standardlibrary/controls/clistview
上記のライブラリを持っています。このリストの中に、ラベル付きのエディットボックスを追加したい。 どうすればいいか教えてください。試してみたが、うまくいかない。
そして、googleで翻訳を始めただけで「チケット」を持っているのです :)
白状しますと、私は捕まりました。 回答が早く、ヘルプの言語が切り替わらなかった 😎。
了解です ;)