inputint StopLoss=30; // Stop Lossinputint TakeProfit=100; // Take Profitinputdouble Lot=0.1; // Количество лотов для торговлиint A; //int tm;
//+------------------------------------------------------------------+voidOnTick()
{
//Print( "====================================================", TimeCurrent() ) ;//--- Объявляем структуры, которые будут использоваться для торговлиMqlTick latest_price; // Будет использоваться для текущих котировокMqlTradeRequest mrequest; // Будет использоваться для отсылки торговых запросовMqlTradeResult mresult; // Будет использоваться для получения результатов выполнения торговых запросовMqlDateTime time_now; // Будет использоваться дляTimeCurrent(time_now);
if(!SymbolInfoTick(_Symbol,latest_price))
if(time_now.hour==10 && tm != time_now.hour) //на первом тике, когда time_now.hour станет 10 а tm еще 9
// и на следующем тике tm будет равно 10
{
mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
mrequest.price = NormalizeDouble(latest_price.bid,_Digits); // последняя цена Bid
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 = Lot; // количество лотов для торговли
mrequest.type= ORDER_TYPE_SELL; // ордер на продажу
mrequest.type_filling = ORDER_FILLING_RETURN; // тип исполнения ордера - все или ничего
mrequest.deviation=100; // проскальзывание от текущей цены//--- отсылаем ордерOrderSend(mrequest,mresult);
}
tm= time_now.hour;return;
}
inputint StopLoss=30; // Stop Lossinputint TakeProfit=100; // Take Profitinputdouble Lot=0.1; // Количество лотов для торговлиint A; ////+------------------------------------------------------------------+voidOnTick()
{
//Print( "====================================================", TimeCurrent() ) ;//--- Объявляем структуры, которые будут использоваться для торговлиMqlTick latest_price; // Будет использоваться для текущих котировокMqlTradeRequest mrequest; // Будет использоваться для отсылки торговых запросовMqlTradeResult mresult; // Будет использоваться для получения результатов выполнения торговых запросовMqlDateTime time_now; // Будет использоваться дляTimeCurrent(time_now);
if(!SymbolInfoTick(_Symbol,latest_price))
if(time_now.hour==10&&time_now.min==0)
{
mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
mrequest.price = NormalizeDouble(latest_price.bid,_Digits); // последняя цена Bid
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 = Lot; // количество лотов для торговли
mrequest.type= ORDER_TYPE_SELL; // ордер на продажу
mrequest.type_filling = ORDER_FILLING_RETURN; // тип исполнения ордера - все или ничего
mrequest.deviation=100; // проскальзывание от текущей цены//--- отсылаем ордерOrderSend(mrequest,mresult);
}
return;
}
请告诉我,是否有可能在一个指标中进行这种字体的选择?
为什么不呢?制作你自己的枚举和所有的问题.........
为什么不呢?制作你自己的枚举和所有的问题.........
这很清楚,但我如何要求提供已安装字体的清单?
你是一个喜剧演员。
我在和谁说话?
我错过了一些东西。谢谢。(笑)。就这样吧!
明白了。谢谢你的帮助。
我也认为EA开出这么多订单很困难。我试着用这个代码来限制订单的数量
也就是说,只在10点开一个订单。但结果是一样的。
2020.10.27 10:25:17.548 Core 1 272 Mb内存的使用,包括36 Mb的历史数据,64 Mb的tick数据。
说实话,我对MKL5的了解并不透彻。但这个逻辑很蹩脚。你需要开一个订单。这是通过在函数的开始部分将一个小时的变量分配给tick,在结束时将其分配给另一个变量来实现的。在中间,如果变量不相等,你就开一个订单。上面的例子与分钟是一样的。
这很清楚,但你如何要求提供已安装字体的清单?
我认为在你的例子中,这是一个自制的清单。没有查询软件。
说实话,我对MKL5的了解并不透彻。但这个逻辑很蹩脚。你需要一个订单来打开相同的。这是通过在函数的开始部分将一个小时的变量分配给tick,在结束时将其分配给另一个变量来实现的。在中间,如果变量不相等,你就开一个订单。上面的例子与分钟是一样的。
这就是为什么我们建议只用你的魔法师来做EA工作。
如果我们的任务是每天在某个时间段开一次单,那么算法如下。
- 启动EA,它检查未结订单的数量,如果与我们的魔术师的订单是开放的,那么退出,直到下一个tick
- 如果没有订单,EA会等待,直到当前的小时和分钟大于给定的时间。
- 这个时候,EA将检查订单历史,如果没有用我们的Magik下订单,那么它将设置一个订单并退出 - 退出是有用的,而不是处理服务器错误,如果订单没有被设置,那么在下一个tick我们将尝试再次这样做,即没有必要在这个tick....,组织一个周期重复开单。但这是一个品味和目标的问题,它是最容易实现的)))。
这就是为什么建议你尝试专门与你的魔术师一起做EA工作。
如果任务是每天在某个时间开一次单,算法如下。
- 启动EA,它检查未结订单的数量,如果与我们的魔术师的订单是开放的,那么退出,直到下一个tick
- 如果没有订单,EA会等待,直到当前的小时和分钟大于给定的时间。
- 这个时候,EA将检查订单历史,如果没有用我们的Magik下订单,那么它将设置一个订单并退出 - 退出是有用的,而不是处理服务器错误,如果订单没有被设置,那么在下一个tick我们将尝试再次这样做,即没有必要在这个tick....,组织一个周期重复开单。但这是一个品味和目标的问题,是最容易实现的)))。
我们在那里还没有达到魔术师的水平。当然了。在5c中,进退两难的当然是应该用错误分析来循环,还是尝试用tick来开仓。如果是长的答案,可能会更容易打勾。
说实话,我对MKL5的了解并不透彻。但这个逻辑很蹩脚。你需要一个订单来打开相同的。这是通过在函数的开始部分将一个小时的变量分配给tick,在结束时将其分配给另一个变量来实现的。在中间,如果变量不相等,你就开一个订单。上面的例子与分钟是一样的。
非常感谢你。你给我的知识正是我所缺少的。我试图做同样的事情,但用4来类比。事实证明,在这种情况下,这种比喻是错误的。
再次感谢你们。
这就是为什么建议你尝试专门与你的魔术师一起做EA工作。
如果任务是每天在某个时间开一次单,算法如下。
- 启动EA,它检查未结订单的数量,如果与我们的魔术师的订单是开放的,那么退出,直到下一个tick
- 如果没有订单,EA会等待,直到当前的小时和分钟大于给定的时间。
- 这个时候,EA将检查订单历史,如果在过去24小时内没有用我们的魔术师下过订单,那么它将下一个订单并退出 - 退出是有用的,而不是处理服务器错误,如果订单没有被下,那么在下一个tick我们将尝试再次做它,即我们不需要在这个tick上组织一个周期的多个订单打开....。但这是一个品味和目标的问题,也是最容易实现的)))。
谢谢你提供的宝贵信息。多亏了你,我对mql 5的理解增加和加深了。
如果你能把我的代码作为一个例子来展示你的思维过程,我将非常感谢你。这将有助于我迅速而准确地吸收你的想法。
再次非常感谢你。
这是我的代码,我在这里错误地写了一个条件,即订单应该只在10:00打开
这是我的代码,其中我写错了条件,即订单应该只在10:00开启
我不是用纯MQL5写的,你可以用CTrade SB类 下单
在CTrade中搜索关于使用SB的文章