//+------------------------------------------------------------------+//| Lot_Size_Depending_On_Risk_And_SL.mq5 |//| Copyright 2023, MetaQuotes Ltd. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2023, MetaQuotes Ltd."#property link"https://www.mql5.com"#property version"1.00"#property script_show_inputsinputuint Risk=6; // Размер риска (> 0, но не более 100 %)inputuint Stop_Loss=1000; // Размер стоп-лосса (> 0, но не более 4294967295)//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+double Lot_Size_Depending_On_Risk_And_SL()
{
//--- блок проверки входных параметров на корректностьif(Risk==0 || Risk>100 || Stop_Loss==0)
{
Print("<===== Введены не корректные размеры риска и/или стоп-лосса! =====>");
return(0.0);
}
//--- блок определения размера лотаdouble trading_account_currency=SymbolInfoDouble(_Symbol,SYMBOL_POINT)*
SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)/
SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE);
double lot=NormalizeDouble((AccountInfoDouble(ACCOUNT_MARGIN_FREE)*Risk*0.01)/
(Stop_Loss*trading_account_currency),2);
//--- блок проверки размера лота на минимум и максимум от возможногоdouble min_volume=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);
double max_volume=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MAX);
if(lot<min_volume)
lot=min_volume;
if(lot>max_volume)
lot=max_volume;
//--- блок расчёта минимального шага изменения объёма необходимого для заключения сделкиdouble step_volume=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);
int ratio=(int)MathRound(lot/step_volume);
if(MathAbs(ratio*step_volume-lot)>0.0000001)
lot=ratio*step_volume;
return(lot);
}
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//---Print(DoubleToString(Lot_Size_Depending_On_Risk_And_SL(),2));
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+//| 1.mq5 |//| Copyright 2023, MetaQuotes Ltd. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2023, MetaQuotes Ltd."#property link"https://www.mql5.com"#property version"1.00"//+------------------------------------------------------------------+//| Input variables |//+------------------------------------------------------------------+// здесь размещаем входные параметры советника//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
// здесь инициализируем то, что считаем нужнымreturn(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
// здесь деинициализируем то, что считаем нужным
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
//--- абстрактный пример советника
Check_Trading(); // проверим условия разрешающие торговлю
Signal_Up(); // ищем сигнал для открытия длинной позиции
Open_Buy_Position(); // открываем длинную позицию
Close_Buy_Positions(); // закрываем длинную позицию
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+void Check_Trading()
{
// здесь вставляем условия разрешающие торговлю
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+void Signal_Up();
{
// здесь вставляем условия, при которых появляется сигнал на покупку
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+void Open_Buy_Position();
{
// здесь вставляем функцию открытия длинной позиции
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+void Close_Buy_Positions();
{
// здесь вставляем функцию закрытия длинной позиции
}
//+------------------------------------------------------------------+
//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
// здесь инициализируем то, что считаем нужнымreturn(INIT_SUCCEEDED);
6201バーの情報を表示
そこには何と書いてある?
インジケータが正しく計算されるようにするためです。フォーラムのメンバーからのヒントを考慮して、このバージョンのスクリプトを作成した:
ありがとう、ウラジミール。
スクリプトの中で非常に重要な点を一つ完全に見落としていました。それは、ロットを正規化する必要があったことです。これが修正版だ:
ありがとう、ウラジミール。
また、現在あるもの:「取引履歴を表示」チェックボックスをクリックすると、週足チャート上のすべての履歴(上下の矢印)がすでに強固なフェンスになっています。
また、他のツール(トレンドライン、矢印など)のように、すべてのタイムフレームに表示しないように設定できるものが欲しいです。
こんにちは。2つのMAの交点に基づくExpert Advisorの 最も簡単な例を どこで見ることができるか教えてください(レッスンを受けることができます)。
1つを追加する方法は知っています。
MQL4では質問がなかったのですが、MQL5ではやり方がよくわかりません。
1つを追加する方法は知っています。
MQL4では質問がなかったのですが、MQL5ではやり方がよくわかりません。
MetaEDitor5を開いてください。2つのMAの交点に基づいたExpert Advisorが組み込まれています。コードを開いて勉強してください。あるいはCodeBaseで探してください。例えば、ここに2つのMAの交差に基づいた最初のEAが あります。
よろしく、ウラジミール。
MetaEDitor 5を開いてください。2つのMAの交点に基づいた(標準的な)Expert Advisorが組み込まれています。コードを開いて勉強してください。またはCodeBaseで検索してください。例えば、ここに2つのMAの交差に基づいた最初のEAが あります。
よろしく、ウラジミール。
ありがとうございます。
OnInitで起こることは理解できました。
どのようにOnTickに正しくねじ込むのでしょうか?
ーありがとう。
OnInitで、何が起こっているのか大体理解できました。
それをOnTickにねじ込むにはどうすればいいのでしょうか?
私はExpert Advisorの書き方の1つのバリエーションしか示して いないが、そのようなバリエーションは膨大な数になる。すべてはプログラマーの資質次第です。Expert Advisorの構造は次のようになります:
ーこんなーもう一度強調しておきますが、これはエキスパートアドバイザーの書き方のガイドではなく、私がエキスパートアドバイザーを書くときに守っているおおよその構造 です。
ありがとう、ウラジミール。
どう書いていいかわからない
どう書いていいかわからない
何がわからないのですか?EA初期化関数の作り方は?それなら、初心者向けのこの記事を 勉強してみてください。
それでは、ウラジミール。