последно добавени
търсене
пазарни сесии
| Sidney | Start | 00:00 |
| Tokyo | Close | 11:00 |
| London | Start | 10:00 |
| New York | Start | 15:00 |
СТРАТЕГИИ
Как да създадем собствен експерт Избрали сте си набор от правила и ис
10:00:59 20.01.2010 от
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); //Край на Старт функцията
}
вписване
най-четено от индикатори
последни коментари
» 26.03.2019 09:17:54 Радостина Иванова Как да използваме фундамента , или как да търгуваме новини
» 19.03.2019 07:40:02 Радостина Иванова Правила за търговия
» 25.02.2019 17:03:10 Радостина Иванова GBP USD пробваме за продажби
» 25.02.2019 16:16:34 Радостина Иванова GBP USD пробваме за продажби
» 15.02.2019 10:18:37 Радостина Иванова Съпротиви подкрепи , дивергенции , рикошети , и още нещо

