BG    |    EN
последно добавени
търсене


пазарни сесии
Sidney Start 00:00
Tokyo Close 11:00
London Start 10:00
New York Start 15:00
СТРАТЕГИИ

Как да създадем собствен експерт Избрали сте си набор от правила и ис

10:00:59 20.01.2010 от



затвори
strategies_126613640614231732441801431052.jpg
0
0


Как да създадем собствен експерт Избрали сте си набор от правила и искате да създадете свои собствен експерт. Тези правила трябва да включват : условие за вход, условие за изход, брой сделки отворени по едно и също време. При натискане на бутона "Създаване на нов" трябва да изберете "Expert Advisor" и Metatrader ще ви генерира един начален код. Той изглежда така : int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- //---- return(0); } //+------------------------------------------------------------------+ Този първоначален код ви генерира трите основни функции, които се използват от Metatrader. Това са "init()" , "deinit()" и "start()". Вие трябва да опишете какво да прави всяка от тях (първите две можете да оставите празни). - Във функцията "init()" трябва да опишете какво следва да се случи при първото извикване на експерта- тук можете да зададете начални стоиности на променливи, параметри, да създадете нови файлове и т.н. - Във функцията "deinit()" трябва да опишете какво следва да се случи при последното извикване на експерта. - Функцията start() е това което ще се извиква при всяка нова пристигнала котировка. В тази функция трябва да опишете своята логика. Има много начини да реализирате една и съща логика. Обикновенно логиката изглежда така : 1.Проверка има ли сигнал за отваряне на нова позиция Тук трябва да се направи проверка дали има отворени позиции , тъй като дори вашата стратегия да включва повече от 1 позиция не бихте искали да се отваря сделка на всеки тик (тъй като експерта се извиква на всеки тик). 2.Проверка дали има сигнал за затваряне на отворените позиции / отложени ордери Тази проверка може да отсъства ако позициите се затварят по лимит и стоп нива. При това положение вашата старт функция трябва да изглежда така : int start() { Ако има улсовие за отваряне на позиции (това е някакво по общо условие например да няма отворени позиции) { Ако има условие за дълга { отваряне на дълга/поставяне на отложен ордер } Ако има условие за къса { отваряне на къса/поставяне на отложен ордер } } Обхождане на отворените позиции { Ако позицията е дълга { Ако има условие за затваряне { Затваряне на позицията } } Ако позицията е къса { Ако има условие за затваряне { Затваряне на позицията } } } В един пример ще реализираме по тази конструкция логика която купува, когато цената стане по висока от най-високата за предния бар и продава когато цената стане по-ниска от най-ниската за предния бар. Държи максимум една отворена позиция и затваря по предишен сигнал. int start() // Начало на Старт функцията { if (OrdersTotal()<1) // условие да нямаме отворени позиции { if(Ask>High[1]) //условие за вход на дълга { OrderSend(Symbol(),OP_BUY,0.1 ,Ask,0,0,0,"",10101,0,Blue); //покупка } if(BidHigh[1]) //Ако има условие за затваряне { OrderClose(OrderTicket(), OrderLots(), Ask, 1,Red); //Затваряне на къса позиция } } } //Край на обхождането на позиците return(0); //Край на Старт функцията }