Обучение языку MQL4 под MetaTrader 4📌

От xbms, 13 апреля, 2013 в Уголок Программиста

#1601


denis77515, а какие условия открытия и в чём конкретно проблема, как работает и как должно быть?


проблема такова открываются ордера по значениям идикатора, между +10(+30) стоп лоссом является значение этого же индикатора только -10, тейк профитом значения больше равно +70 ,то есть у меня не получается написать обратные закрытие то есть тейк профит -70,стоп лосс +10.Получается такая петрушка когда ордера плавают допустим меньше значения +10(-10) то нормально как только выходят из этого диапазона он их закрывает выше описал как оно должно работать.
#1602
denis77515 то, что я вижу в Вашем коде можно записать вот так:
if (MathAbs(indi_usd) >= 10) Close_Orders_USD();
это эквивалентно Вашему коду, но Вы пишите, что работает не правильно - поэтому Вы опишите словами, как должно работать, а мы запись на МКЛ сообразим.
#1603


denis77515 то, что я вижу в Вашем коде можно записать вот так:
if (MathAbs(indi_usd) >= 10) Close_Orders_USD();
это эквивалентно Вашему коду, но Вы пишите, что работает не правильно - поэтому Вы опишите словами, как должно работать, а мы запись на МКЛ сообразим.


Здраствуйте OLL Открываем позиции ТОЛЬКО если индикатор находится между -10 и -30 или между 10 и 30.Выходим из позиции если индикатор дошел до 70 или -70 (тейк-профит). Стоп-лоссом для нас будет значение индикатора -10 или 10 то есть открыты ордера при показаниях 10(30) стоп лосс -10,тейк профит 70, открыты ордера -10(-30) то тейк профит -70,стоп лосс 10 в общем получается что открыта корзина ордеро по условию 10(30) тут же закрывает условием больше 10. в общем вот код вместе с индикаторами.посмотрите если не затруднит!

Изменено 25 ноября, 2014 пользователем denis77515

#1604

все там есть


Добавлено: 24-11-2014 17:46:07

из советника traltest вызываю заголовочный файл. который вызывает библиотеку

traltest.mq48 скач.
library.txt8 скач.
library.mq48 скач.

#1605

Да,уж - задал задачку...
Запустил я Ваш комплект:
1. Убрал #property strict в сове
2. Добавил в описание вызываемой функции (в библиотеке) void tral (...) export

#1606
denis77515
условие на вход: if (MathAbs(indi_usd) >= 10 && MathAbs(indi_usd) только с направлением входа надо разобраться.
условие на выход: if (MathAbs(indi_usd) >= 70) Close_Orders_USD();
ну со СЛ и ТР я думаю сами сообразите.
#1607

дописал. но все так же...

#1608

у меня пашет...

Test1.png
_traltest.mq410 скач.
library.mq410 скач.

#1609

Большое спасибо. ну на конец то заработало

#1610


denis77515
условие на вход: if (MathAbs(indi_usd) >= 10 && MathAbs(indi_usd) только с направлением входа надо разобраться.
условие на выход: if (MathAbs(indi_usd) >= 70) Close_Orders_USD();
ну со СЛ и ТР я думаю сами сообразите.


oll я тут придумал все таки вот какую штуку, как думаете будет это все работать ?
Спойлер

[
//----------------------------------------------------------------------++
void OnTick()
{
if(Uslovie_Close_USD() == true)Close_Orders_USD();
}
//--------------------------------------------------------------------------++
void Uchet_Orderov(int mag, int &mas[7])
{
ArrayInitialize(mas,0);
//mas[0]; OP_BUY;
//mas[1]; OP_SELL;
//mas[2]; Сделки
int tip;
for(int i=0; i{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
tip=OrderType();
switch(tip)
{
case 0: {mas[0]++;mas[2]++;break;}//Buy
case 1: {mas[1]++;mas[2]++;break;}//Sell
}
}
}
//-------------------------------------------------------------------++
bool Uslovie_Close_USD()
{
bool res = false;
Uchet_Orderov(Magic_usd,Array_Close_Orders_usd);
Uslovie_usd=Array_Close_Orders_usd[0];//Buy
Usloviex_usd=Array_Close_Orders_usd[1];//Sell
if(MathAbs(indi_usd) >= 70 && Usloviex_usd == 4 && Uslovie_usd == 3) res = true;
if(MathAbs(indi_usd) if(MathAbs(indi_usd) if(MathAbs(indi_usd) >= 10 && Usloviex_usd == 3 && Uslovie_usd == 4) res = true;
return(res);
}







]

#1611


oll я тут придумал все таки вот какую штуку, как думаете будет это все работать ?

Нет, работать не будет.
Я думаю Вы не чётко представляете чего хотите, а я уж вообще не понял... Пишите буквами, что хотели сделать.
1. Что такое mas[2]? - ответ: общее количество ордеров
2. Чему равно MathAbs(indi_usd)
#1612



oll я тут придумал все таки вот какую штуку, как думаете будет это все работать ?

Нет, работать не будет.
Я думаю Вы не чётко представляете чего хотите, а я уж вообще не понял... Пишите буквами, что хотели сделать.
1. Что такое mas[2]? - ответ: общее количество ордеров
2. Чему равно MathAbs(indi_usd)

oll посмотрите на скрин,я думаю вам станет все понятно !

Image_3.pdf9 скач.

#1613
denis77515 мне не стало всё ясно. Вот что я понял:
1. На одной паре открывается 7 ордеров (может 3+4, или 1+6)
2. При +70 - профит для селл при +10 фиксируем убыток по бай, в диапазоне +10+30 - открытие селл
3. При -70 - профит для бай, -10 закрываем в убыток селл, в диапазоне -10-30 - открытие бай
4. Мультивалютный не трогаю - запутаемся.
5. Готовой совы по кукловоду нет?
Если я прав - маякни. или исправь.
#1614


denis77515 мне не стало всё ясно. Вот что я понял:
1. На одной паре открывается 7 ордеров (может 3+4, или 1+6)
2. При +70 - профит для селл при +10 фиксируем убыток по бай, в диапазоне +10+30 - открытие селл
3. При -70 - профит для бай, -10 закрываем в убыток селл, в диапазоне -10-30 - открытие бай
4. Мультивалютный не трогаю - запутаемся.
5. Готовой совы по кукловоду нет?
Если я прав - маякни. или исправь.


Я написал такую сову по кукловоду,входы все правильные,вроде работает нормально.Только вот с выходом у меня мозгов не как не хватает.3 месяц бьюсь и не как не получается.Я почему прошу помощи.Я выкладывал вчера полный код по нему,но посмотрел сутки не кто не скачивает,ну думаю значит не интересно народу,я и удалил.oll если вам интерена эта тема давайте добьем его.Пишите в личку там пообщаемся. А то что вы правильно написали вы или вы не поняли,но то что вы написали я совсем не понял.
#1615
denis77515 Меня-бы заинтересовало, если есть стейты или ручное исследование данной стратегии, а пока я лишь хочу Вам помочь, но вот условия до конца не понимаю.
Давайте зайдём с другой стороны: после пересчёта ордеров по стороне селл убыток - при +10 закрываем, если профит, то ждём -70?
#1616


denis77515 Меня-бы заинтересовало, если есть стейты или ручное исследование данной стратегии, а пока я лишь хочу Вам помочь, но вот условия до конца не понимаю.
Давайте зайдём с другой стороны: после пересчёта ордеров по стороне селл убыток - при +10 закрываем, если профит, то ждём -70?


oll вот мониторинг моего счета,но последнее время я решил влезть на перекуплености при показаниях индикатора боле 90,но как оказалось зря.вот в данный момент уже месяц пересиживаю убыток,на реале конечно так бы не рискнул. http://www.myfxbook.com/members/denis77515/eapuppeteer-v21-auto/986199
на счет того что вы пишите если брать более по проще корзину ордеров то JPY да вход происходит когда индикатор например находится между значениями допустим -10 и -30 открываются ордера на открытии нового дня Buy; AUDJPY, CADJPY, CHFJPY, EURJPY, GBPJPY, NZDJPY, USDJPY при условии если индикатор достигает значение +10 то мы закрываем убыток,то есть всю корзину ордеров не важно есть какие там в прибыли или нет. если же идет в нашу сторону то есть ждем значение -70 то так же закрываем всю корзину ордеров.надеюсь боле менее понятно объяснил.
#1617

Кидай сову, я подрихтую. Если есть где-то подробно расписанные условия - кинь ссылку.

#1618


Кидай сову, я подрихтую. Если есть где-то подробно расписанные условия - кинь ссылку.


oll других правил к ней нет кроме как на этом же сайте http://tradelikeapro.ru/strategiya-kuklovod/

Изменено 25 ноября, 2014 пользователем denis77515

#1619
denis77515
Глянул наскоро сову - я поражён, что она работает... Вы сами писали? - если да, то поздравляю - большая работа.
но открытие ордеров по разным инструментам нужно делать и по ценам этих инструментов.
в общем ошибок много, даже не знаю, что делать - вроде обещал исправить, а там переписывать нужно...
Объясните мне, что должна делать сова при следующем раскладе:
индюк прошёл от 0 до +10 (вошли) потом до +70 (закрыли), потом до +30 - опять входим? в ту-же сторону?
#1620


denis77515
Глянул наскоро сову - я поражён, что она работает... Вы сами писали? - если да, то поздравляю - большая работа.
но открытие ордеров по разным инструментам нужно делать и по ценам этих инструментов.
в общем ошибок много, даже не знаю, что делать - вроде обещал исправить, а там переписывать нужно...
Объясните мне, что должна делать сова при следующем раскладе:
индюк прошёл от 0 до +10 (вошли) потом до +70 (закрыли), потом до +30 - опять входим? в ту-же сторону?


Да писал сам :d ,ну я же не профи,не знаю, но каким то образом она работает :d. Да если идюк показыват такие же значения для входа то входим по новой, но каждый вход только на открытии новой свечи. Вообще там я как понял и выход такой же,то есть на закрытии свечи и если есть сигнал от индюка,но решил сделать выход динамичным
#1621

Всем здравствуйте.
Зарегился я на форуме уже давно,но до этого был только читателем(масса интересной информации).
Хотелось бы выразить признательность уважаемому Павлу за создание очень полезного и познавательного блога и пожелать ему всяческих успехов.
Я,как и многие участники форума,заинтересовался программированием на MQL4.Хочу поблагодарить уважаемого XMBS за уроки.Надеюсь,ему не надоест просвещать новичков ;;).
У меня такой вопрос-подскажите,пожалуйста,как закодировать выставление стоплосса по МА?
Вот код:

void OnTick()
{double SLBuy, SLSell, HssVal, LssVal;
//-------------------------------------------вычисление значения индикаторов
double HighMA,LowMA,RSIVal;
HighMA = iMA(NULL,0,HPeriod,0,HMetod,2,0);
LowMA = iMA(NULL,0,LPeriod,0,LMetod,3,0);
RSIVal = iRSI(NULL,0,RSIperiod,RSIprice,0);
//--------------------------------------------определение параметров ордера на покупку
if (Open[1]HighMA && RSIVal>50 && CountBuy() == 0)
//--------------------------------------------открытие ордера на покупку
{
LssVal = iCustom(NULL,0,"Moving Average",LPeriod,0,LMetod,3,0);
SLBuy = NormalizeDouble(LssVal-SLindent*Point,Digits);
int ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,NULL,Magic,0,Blue);
if(ticket > 0)
{
if(OrderSelect(ticket,SELECT_BY_POS,MODE_TRADES)== true)
bool OrdBuyMod = OrderModify(ticket,OrderOpenPrice(),SLBuy,0,0);

}

}
//--------------------------------------------определение параметров ордера на продажу
if (Open[1]>LowMA && Close[1] //--------------------------------------------открытие ордера на продажу

{
HssVal = iCustom(NULL,0,"Moving Average",HPeriod,0,HMetod,2,0);
SLSell = NormalizeDouble(HssVal+SLindent*Point,Digits);
ticket = OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,NULL,Magic,0,Red);
if(ticket > 0)
{
if(OrderSelect(ticket,SELECT_BY_POS,MODE_TRADES)== true)
bool OrdSellMod = OrderModify(ticket,OrderOpenPrice(),SLSell,0,0);


}

}
}

Компилятор выдает 0 ошибок,0 предупреждений.
Сов позы открывает но стопы не ставит.
Функции CountBuy() и CountSell() взяты из уроков.

Изменено 26 ноября, 2014 пользователем Айк

#1622
Айк, Вы бы лучше приложили полный код в виде файла, в эдиторе гораздо удобней смотреть чем так.
#1623


У меня такой вопрос-подскажите,пожалуйста,как закодировать выставление стоплосса по МА?


Вот эта строка - лишняя: LssVal = iCustom(NULL,0,"Moving Average",LPeriod,0,LMetod,3,0);
используйте значение ранее вычисленное: LowMA. Для Селл - тоже самое.
или у Вас ещё более хитрая МА есть?
#1624

Дело в том,что я раньше уже пробовал использовать HighMA и LowMA;стопы все равно не ставились.
Необходимое пояснение-сов предназначен только для открытия позиции.

MAHigh-RSI-MALow.mq412 скач.

#1625


Дело в том,что я раньше уже пробовал использовать HighMA и LowMA;стопы все равно не ставились.
Необходимое пояснение-сов предназначен только для открытия позиции.


Я иправил тебе ошибки,сравни два кода и поймешь в чем было дело.

Изменено 26 ноября, 2014 пользователем denis77515

Для публикации сообщений создайте учётную запись или авторизуйтесь

Перейти к списку тем
Форум · 2.0.20260627.0025