//+------------------------------------------------------------------+//| 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 条形信息
上面写了什么?
这个故事很可能是为测试者准备的,以便在其中正确计算指标考虑到论坛成员的提示,我们得到了这个版本的脚本:
敬上,弗拉基米尔
我完全忽略了脚本中非常重要的一点。有必要将批次标准化。这是更正后的版本:
问候,弗拉基米尔。
下午好。您能告诉我在哪里可以看到基于两个 MAs 交集的智能 交易系统的最简单示例 吗(您可以提供一个课程)?
我知道如何添加一个。我不想进行简单的复制粘贴和加长代码,我知道还有其他方法。
如果在 MQL4 中我没有任何问题,那么在 MQL5 中我无法完全理解如何操作。
我知道如何添加一个。我不想进行简单的复制粘贴和加长代码,我知道还有其他方法。
如果在 MQL4 中我没有任何问题,那么在 MQL5 中我无法完全理解如何操作。
你好,请打开 MetaEDitor 5。它有一个内置的(标准)Expert Advisor,基于两个 MA 的交叉点。打开代码并研究它。或者在 CodeBase 中查找。例如,这里有第一个基于两条 MAs 交集的EA。
弗拉基米尔
你好,请打开 MetaEDitor 5。它有一个内置的(标准)智能交易系统,基于两个 MA 的交叉点。打开代码并研究一下。或者在 CodeBase 中搜索。例如,这是第一个基于两条 MAs 交集的EA。
弗拉基米尔
谢谢,我看了一下。
我知道 OnInit 会发生什么。
如何将其正确地拧到 OnTick 中?
谢谢,我查了一下。
在 OnInit 中,我大致明白发生了什么。
怎样才能把它全部整合到 OnTick 中呢?
我展示的只是 编写智能交易系统的一种变体,但这种变体可以有很多。这完全取决于程序员的资质。智能交易系统的结构可以是这样的:
类似这样我再次强调--这不是编写智能交易系统的指南,而是我在编写智能交易系统时遵循的大致结构。
再见,弗拉基米尔。
我不知道怎么写
我不知道怎么写
你到底不清楚什么?如何创建 EA 初始化函数?那就试试学习这篇初学者文章 吧。
再见,弗拉基米尔。