//+------------------------------------------------------------------+//| trade v1.mq4 |//| |//| frixer@yandex.ru |//+------------------------------------------------------------------+//--- input parameters//extern int Время;//extern int Input;//extern int SL;//extern int TP;//+------------------------------------------------------------------+//| expert initialization function |//+------------------------------------------------------------------+int init()
{
//----//----return(0);
}
//+------------------------------------------------------------------+//| expert deinitialization function |//+------------------------------------------------------------------+int deinit()
{
//----//----return(0);
}
//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start()
{
//----int bars = 9; // количество баровint gmt = 16; // время входаdoubleinput = 0.0010; // вход на рынокdouble sl = 100; // уровень SL от высоты коробки в %double tp = 100;
int lot=1;
int topOrder,bottomOrder;
if (Hour()==gmt) // проверяем свечу
{
double Shift_high = iHighest(NULL,PERIOD_H1,MODE_HIGH,bars,0); //поиск бара с максимальной ценой из bars начиная с 0-го бараdouble Shift_low = iLowest (NULL,PERIOD_H1,MODE_LOW ,bars,0); //поиск бара с минимальной ценой из bars начиная с 0-го бараdouble Price_high = iHigh (NULL,PERIOD_H1,Shift_high); // присвоение переменной максимального значение ценыdouble Price_low = iLow (NULL,PERIOD_H1,Shift_low); // присвоение переменной минимального значение ценыdouble Hinput = Price_high + input; // вверхняя граница входаdouble Linput = Price_low - input; // нижняя граница входаdouble height_box = Price_high - Price_low; // высота коробки barsdouble volumeSL = height_box / 100 * sl; // уровень SL зависит от %
topOrder=OrderSend(Symbol(),OP_BUYSTOP,lot,Hinput,3,Price_high-(height_box/100*sl),Price_high+(height_box/100*tp),"BUY",16384,0,Green);
if (topOrder<0)
{
Print("Верхний ордер ошибка #", GetLastError());
return(0);
}
}
//----return(0);
//----return(0);
}
//+------------------------------------------------------------------+
我已经试过这种方式(我的朋友建议我),但它不起作用。
int Orerov=0;
int Orderov_all = OrdersTotal(); // всего ордеров в терминалеfor (int n = 0;n<Orderov_all;n++) // начало цикла перебора ордеров
{
if(OrderSelect(n,SELECT_BY_POS)==TRUE) // выбран первый в списке ордерif(Comm == OrderComment()) // условие совпадения комментария
{
Tip= OrderType(); // тип
Cena=NormalizeDouble(OrderOpenPrice(),4); // цена
Ticket= OrderTicket(); // тикет
Stop=NormalizeDouble(OrderStopLoss(),4); // стоп-лосс
LOT=NormalizeDouble(OrderLots(),1); // размер лота
Orderov=1; //
}
}
例如,如果10年内一个交易账户的利润是500%(数字是名义上的) -
如何计算平均年利润,同时考虑到所有利润都是再投资?
谢谢你!
大家好,新年快乐。我找不到任何方法只下一次订单,如果条件满足后下了订单,那么如果有第二次的订单就不会被下。我想给你举个例子。
课本上的例子 就是你的案例。
例如,如果10年内一个交易账户的利润是500%(数字是名义上的) -
如何计算平均年利润,同时考虑到所有利润都是再投资?
谢谢你!
教程中的例子 就是你的情况。
我读过它,但它不符合我的算法,我仍然在每个tick上有订单。
我已经试过这种方式(我的朋友建议我),但它不起作用。
大家好,新年快乐。我不能让一个订单只下一次,如果条件得到满足后再下订单,我需要它,如果有第二次的订单,它将不会被放置。如果你能举出一个例子。
6的十次方的根,然后减去1再乘以100。我们每年得到19.62%。
谢谢你!
总之,问题是这样的。
我有一个多期的指标。
为了优化计算,我使用了以下循环
// TimeFrames[i] массив с периодами
for (i=0; i<NumTimeFrames; i++)
{if (total_bars[i] != iBars(instrument, TimeFrames[i]) )
{
// тут вычисления индиктора
total_bars[i] = iBars(instrument, TimeFrames[i]);
}
}
主要问题是,iBars 不能加载除当前时段以外的其他时段的价格...
所有的MQL技巧,如IndicatorCounted和RefreshRates
只对当前周期起作用,也就是说,iBars从历史中获取,而历史只能通过改变图表上的周期来加载。该怎么做?MQL是否有一些工具可以在后台加载其他时期的条形图(与当前时期不同)?
p.s. 希望我没有胡言乱语(()。主要问题是,iBars不能加载除当前时间段以外的价格。