Ваши вопросы по языку MQL4

Алекc1234

Местный житель
Нашёл лучше программу, кого интересует, выкладываю
 

Вложения

  • _SpreadController.zip
    65,6 КБ · Просмотры: 26

greatiger

Активный участник
научите как приделывать ограничение количества колен ордеров в советниках

например
1. в переменных пишем тото
extern int Max_trades=4;
2 . после start то-то
3. В функциях в конце то-то

если так конечно вариант???



(а то мне человек пытался объяснять я ничего не понял из этого

1) Пишем в глобальных переменных
PHP код:
extern int Max_trades=4;
int buy,sell;
2) Перед ОрдерСенд пишем
PHP код:
if(buy<Max_orders)
{
OrderSend(...);
}
3) Перед 2 пишем ссылку на функцию подсчёта ордеров
PHP код:
CountOpenPositions();
4) В конце записываем саму функцию.
PHP код:
/////////////////////////////////////////////////////////
void CountOpenPositions()
{
buy=0;
sell=0;

for (int i=OrdersTotal()-1; i>=0; i--)
{
OrderSelect(i,SELECT_BY_POS);
{
if(OrderMagicNumber()==magic)
{
if(OrderType()==OP_BUY) buy++;
if(OrderType()==OP_SELL) sell++;
}
}
}

}

функция подсчета ордеров откуда она взялась, где вызывается и прочее, там макстрейдс, там максордерс - вообщем в другом месте непонятно объяснили(
 

AlexeyVik

Программист mql4 mql5
научите как приделывать ограничение количества колен ордеров в советниках

например
1. в переменных пишем тото
extern int Max_trades=4;
2 . после start то-то
3. В функциях в конце то-то

если так конечно вариант???



(а то мне человек пытался объяснять я ничего не понял из этого



функция подсчета ордеров откуда она взялась, где вызывается и прочее, там макстрейдс, там максордерс - вообщем в другом месте непонятно объяснили(
Тебе и там правильно объяснили. Только поменяй местами пункт 2) и 3)

Функция подсчета ордеров это как раз сердце твоих пожеланий. Она подсчитывает к-во открытых ордеров. её можешь просто скопировать и вставить ниже последней строки кода. Потом перед открытием ордера ставится условие: если открыто меньше заданного, то открываем.
 
Последнее редактирование:

eevviill

Заблокирован
научите как приделывать ограничение количества колен ордеров в советниках

например
1. в переменных пишем тото
extern int Max_trades=4;
2 . после start то-то
3. В функциях в конце то-то

если так конечно вариант???



(а то мне человек пытался объяснять я ничего не понял из этого



функция подсчета ордеров откуда она взялась, где вызывается и прочее, там макстрейдс, там максордерс - вообщем в другом месте непонятно объяснили(
Этоя блин не поятно объяснил? Может это ты просто не понимаешь. А если так то следует подучить язык MQL4.
 

greatiger

Активный участник
Этоя блин не поятно объяснил? Может это ты просто не понимаешь. А если так то следует подучить язык MQL4.
если б я помнил кто...а выразился, что плохо объяснили, так как

понятно же,что налицо нубство именно в понимании кода, а нам тупым надо, чтоб дошло и получилось все разжевать видать еще подробней !
 
Последнее редактирование:

LagmaNN

Местный житель
Дальше. Если тебе нужно пресечение вниз, то сравниваем цену открытия бара и закрытия.
PHP код:
if(OrdersTotal()<1)
{
if(Open[1]>lag1 && Close[1]<lag1) OrderSend(Symbol(),OP_SELL,Lot,Bid,Slippage,SLsell,TPsell,"alf non lag mtf",0,DeepSkyBlue);
}
Это только для продаж, а пересечение в верх заменить OP_SELL,Lot,Bid,Slippage,SLsell,TPsell
на
OP_BUY,Lot,Bid,Slippage,SLbuy,TPbuy,
да?
как сделать что б и в buy работал?
 

smartmans

Активный участник
Подскажите, как в формулу спреда
PHP:
double SPRD = (Ask - Bid)/Point;
Вотнуть комиссию брокера? Устаешь вести рассчет.
Желательно альтернативу этому
PHP:
   double SPRD = (Ask - Bid)/Point + 6;
(чтобы не самому писать число, а уже учитывалась от терминала и без ошибок)
 

eevviill

Заблокирован
Подскажите, как в формулу спреда
PHP:
double SPRD = (Ask - Bid)/Point;
Вотнуть комиссию брокера? Устаешь вести рассчет.
Желательно альтернативу этому
PHP:
   double SPRD = (Ask - Bid)/Point + 6;
(чтобы не самому писать число, а уже учитывалась от терминала и без ошибок)
Культурней будет так.

SPRD=MarketInfo(Symbol(),MODE_SPREAD);

А комисию самому надо вычислить.
Но если ты считаешь спред отдельного ордера и комисию, то так.
+OrderComission();
 

smartmans

Активный участник
То же самое : (.
Поставил
PHP:
MarketInfo("EURUSD",MODE_SPREAD)
Скомпилилось нормально, но комиссия не вкатила. Причем если индикатор стоит на 5 парах, везде нужно создавать по 1 индикатору, либо выносить переменную и настраивать.
Спред различается по каждой паре.
03.19.2013-19.14.png
Со вторым OrderComission не работает - для простого индикатора это
Может есть еще варианты? А то не хочется с округлением +5 пп с неба вставлять :)
 

eevviill

Заблокирован
То же самое : (.
Поставил
PHP:
MarketInfo("EURUSD",MODE_SPREAD)
Скомпилилось нормально, но комиссия не вкатила. Причем если индикатор стоит на 5 парах, везде нужно создавать по 1 индикатору, либо выносить переменную и настраивать.
Спред различается по каждой паре.
03.19.2013-19.14.png
Со вторым OrderComission не работает - для простого индикатора это
Может есть еще варианты? А то не хочется с округлением +5 пп с неба вставлять :)
"EURUSD" может лучше Symbol()?

OrderComission() работает везде. Сначало надо выбрать ордер OrderSelect...
 

qqmber

Почетный гражданин
То же самое : (.
Поставил
PHP:
MarketInfo("EURUSD",MODE_SPREAD)
Скомпилилось нормально, но комиссия не вкатила. Причем если индикатор стоит на 5 парах, везде нужно создавать по 1 индикатору, либо выносить переменную и настраивать.
Спред различается по каждой паре.
03.19.2013-19.14.png
Со вторым OrderComission не работает - для простого индикатора это
Может есть еще варианты? А то не хочется с округлением +5 пп с неба вставлять :)
Странно, но комиссию до открытия ордера узнать не получится. Разве что поискать символ в истории и посчитать, сколько взяли за лот.
 

AlexeyVik

Программист mql4 mql5
То же самое : (.
Поставил
PHP:
MarketInfo("EURUSD",MODE_SPREAD)
Скомпилилось нормально, но комиссия не вкатила. Причем если индикатор стоит на 5 парах, везде нужно создавать по 1 индикатору, либо выносить переменную и настраивать.
Спред различается по каждой паре.
03.19.2013-19.14.png
Со вторым OrderComission не работает - для простого индикатора это
Может есть еще варианты? А то не хочется с округлением +5 пп с неба вставлять :)
Ты совершенно зря пытаешься всунуть комиссию в индикатор. Комиссия напрямую зависит от лота ордера, цены открытия ордера и конечно-же валюты ордера и депозита. Но самое главное это лот.
Ну если желание неудержимо, то формула примерно такая (не уверен что правильно помню)
xxx единиц базовой валюты за 1 полный лот выраженных в валюте депозита счёта по текущему курсу. xxx может у разных брокеров отличаться.

ps: Вот можно подробно почитать здесь _http://www.alpari.ru/ru/trading/special_terms/
 
Последнее редактирование:

LagmaNN

Местный житель
ребят подскажите новичку: что и где нужно прописать что б советник при срабатывании стоплося советник открывал следующий лот как в мартине с большим лотом?
 

Ugar

Гуру форума
ребят подскажите новичку: что и где нужно прописать что б советник при срабатывании стоплося советник открывал следующий лот как в мартине с большим лотом?
Нужно заказать переделку программисту. Например здесь
 

strannik-ps

VIP-участник
Приветствую!
Ушел в ступор.
Поясните, как программно получить значение количество баров, от минимума прошлой недели до начало текущей.
 

alex1978

Местный знаток
Подскажите, может кто сталкивался с таким?
Эксперт выставляет один отложенный ордер 0.2 лота
Вместо этого открываются 2-е позиции по 0.1:question:
Одна из позиций 0.1 имеет тикет отложенного а вторая другой тикет
Естейственно, стоп и тейк у них тоже общий...
Обе они имеют один магик номер и общий комментарий
Сам алгоритм совы полностью исключает такие действия.
В логах подобные действия(момент открытия 2-х позиций по 0.1) не отображаются
КАК ВООБЩЕ ТАКОЕ МОЖЕТ БЫТЬ????
 

Ugar

Гуру форума
Приветствую!
Ушел в ступор.
Поясните, как программно получить значение количество баров, от минимума прошлой недели до начало текущей.
Находишь временные границы. Можно с помощью iTime на W1.
Дальше с помощью iBarShift найди номера баров на нужном тайм фрейме.
Дальше находишь бар с минимумом с помошью iLowest
Разница между этим баром и баром временной границы начала текущей недели и есть то что хочешь.
 

Ugar

Гуру форума
Подскажите, может кто сталкивался с таким?
Эксперт выставляет один отложенный ордер 0.2 лота
Вместо этого открываются 2-е позиции по 0.1:question:
Одна из позиций 0.1 имеет тикет отложенного а вторая другой тикет
Естейственно, стоп и тейк у них тоже общий...
Обе они имеют один магик номер и общий комментарий
Сам алгоритм совы полностью исключает такие действия.
В логах подобные действия(момент открытия 2-х позиций по 0.1) не отображаются
КАК ВООБЩЕ ТАКОЕ МОЖЕТ БЫТЬ????
Почитай регламент или позвони в тех поддержку. Отложенный ордер находится на сервере ДЦ и когда его цена цепляет он срабатывает без участия терминала клиента и советника.
 
Верх