[АРХИВ]Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 5. - страница 191

 
solnce600:

Большое спасибо за помощь.

Но открывает сделки в тестере  на каждой минутной свече.    инф. в этой ссылке   http://clip2net.com/s/2T98Y

А мне нужно  что бы открывала один ордер на  пятиминутной свече,но не на каждой.

А только если текущая пятиминутка будет > или = 30 пунктов .(от цены открытия до ее максимума)

Т.е открыть один рыночный ордер на тридцатом пункте от цены открытия нулевой=текущей пятиминутки.

А если текущая пятиминутка  от цены открытия до максимума меньше 30 пунктов,то рыночный ордер не открывать.

Просто бросьте эксперт на пятиминутный график, будет как вы написали.

Или замените везде в коде Open[0] на iOpen(Symbol (), PERIOD_M5, 0), тогда будет работать с любого графика.

И еще у Вас вторым условием стоит  - если цена закрытия текущей пятиминутки >= цене открытия ордера.

Не, Close[0] - это текущая цена закрытия 0 бара, то есть просто текущая цена. Можно было написать просто Bid, результат тот же.


Т.е. ордеров будет немного , я посчитал в екселе, с 1999 года - чуть больше 3000 по евро доллару в обе стороны.

Переходим на следующую пятиминутку и если она,т.е. текущая пятиминутка  > или = 30 пунктов,то открываемся на тридцатом пункте,если меньше - переходим на следующую пятиминутку ...и так до конца графика.

Но вся фишка в том,- по приблизительным подсчетам ,большая часть пятиминуток ,которые > или = 30 пунктов гораздо чаще пролетают 15 пунктов чем закрываются по стопу в 30 п.Т.е.соотношение между ними таково,что в целом график баланса будет идти вверх.Хочу проверить эту идею на тестере.

У Вас в условии стоит - если нет открытых ордеров 

Но по моей системе могут образоваться две пятиминутки с вышеописанными параметрами подряд и если ордер от предыдущей пятиминутки не закроется - тогда на второй пятиминутки ордер не откроется.

А мне нужно,что бы один ордер  открывался на каждой пятиминутке с вышеописанными параметрами независимо от того есть или нет в торговле ордера.

Ок, тогда поменяем условие. Итого выходит:

int start()

{

 double Price=iOpen (Symbol (),PERIOD_M5,0)+300*Point;        
 double SL=NormalizeDouble (Price-300*Point, Digits);         
 double TP=NormalizeDouble (Price+150*Point, Digits);    
 
 int last_order_bar = 0;
 int ot = OrdersTotal();

 if (ot>0) //если есть ордера в рынке
 {
   if (OrderSelect (ot-1,SELECT_BY_POS)) //выбрали последний ордер
      if (OrderType ()==OP_BUY || OrderType ()==OP_SELL) //проверили тип
         last_order_bar = iBarShift (Symbol (),PERIOD_M5,OrderOpenTime ()); //запомнили, на каком 5-минутном баре открыт последний ордер (если он есть)
 }
 
 if (OrdesTotal()==0 || last_order_bar>0) //если ордеров нет либо последний открыт не на текущем баре
    if (Bid>=Price)                       //если текущая цена доползла до цены открытия
       int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP );

}
 
beginner:
Интересует именно советник, объекты - самому что ли свечу рисовать?

Принцип понять можно:

//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Автор : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|        Рисуем на чарте бары                                                       |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void fDraw_Bars (string fs_Pref,          // Префикс имени объекта
                 int fi_NUMPeriod,        // Индекс (номер) периода, на котором будет виден объект
                 bool fb_IsNullBar,       // флаг рисования 0-го бара
                 double ar_Price[][][4])  // Массив с ценами
{
    int      li_widht = 6;
    string   ls_Name;
    color    lc_color = Aqua;
    datetime ldt_Time;
//----
    //---- Определяем время текущей свечи (её место в истории)
    if (fb_IsNullBar) {ldt_Time = Time[0];}
    else {ldt_Time = Time[1];}
    //---- Рисуем свечу
    ls_Name = StringConcatenate (fs_Pref, "_Candle_", TimeToStr (ldt_Time));
    if (ar_Price[0][1][3] < ar_Price[0][1][0]) {lc_color = Red;} else {if (ar_Price[0][1][3] == ar_Price[0][1][0]) {li_widht = 8;} else {lc_color = Blue;}}
    fDraw_OBJ (ls_Name, OBJ_TREND, ldt_Time, ar_Price[0][1][3], ar_Price[0][1][0], lc_color, li_widht, fi_NUMPeriod, "", 0, 10, "Arial", 0);
    //---- Рисуем тени свечи
    ls_Name = StringConcatenate (fs_Pref, "_Shadow_", TimeToStr (ldt_Time));
    if (ar_Price[0][1][3] <= ar_Price[0][1][0]) {lc_color = Gold;} else {lc_color = DeepSkyBlue;}
    fDraw_OBJ (ls_Name, OBJ_TREND, ldt_Time, ar_Price[0][1][1], ar_Price[0][1][2], lc_color, 1, fi_NUMPeriod, "", 0, 10, "Arial", 0);
//---- 
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
 
Diubakin:
Вы тестовый советник для ф-ции в тестере смотрели? Закрывает именно макс. убыток с макс. профитом независимо от того сколько там ордеров - два или двадцать.
Сергей! Пока вопрос о функции оставляю открытым, т.к. завтра вставлю в Ваш тестовый советник ещё несколько функций, чтобы провести чистый эксперимент. Смотрел в визуальном режиме, и почти всё время двойное закрытие происходит последним, раньше закрываются по СЛ и ТП, т.е. не из чего выбирать. Убрал Стопы и Тэйки, чтобы было из чего выбирать. Завтра покажу Ваш советник со всеми добавочными функциями и комментами! Сами сможете увидеть, как работает функция. Очень хочу, чтобы показало, что я ошибся! Если окажусь прав, постараюсь добиться желаемого! До завтра!
 
alsu:

Просто бросьте эксперт на пятиминутный график, будет как вы написали.

Или замените везде в коде Open[0] на iOpen(Symbol (), PERIOD_M5, 0), тогда будет работать с любого графика.

Не, Close[0] - это текущая цена закрытия 0 бара, то есть просто текущая цена. Можно было написать просто Bid, результат тот же.


Ок, тогда поменяем условие. Итого выходит:




Большое Вам спасибо за помощь.Все ОК. Но......

1. На некоторых пятиминутках открывается более 1 ордера.

2. Некоторые ордера закрываются по стоп-приказам,цена которых отличается от той,что прописана в коде. 

Во вложенном файле пометил данные ордера.

 
alsu:

Просто бросьте эксперт на пятиминутный график, будет как вы написали.

Или замените везде в коде Open[0] на iOpen(Symbol (), PERIOD_M5, 0), тогда будет работать с любого графика.

Не, Close[0] - это текущая цена закрытия 0 бара, то есть просто текущая цена. Можно было написать просто Bid, результат тот же.


Ок, тогда поменяем условие. Итого выходит:




Большое Вам спасибо за помощь.Все ОК. Но......

1. На некоторых пятиминутках открывается более 1 ордера.

2. Некоторые ордера закрываются по стоп-приказам,цена которых отличается от той,что прописана в коде. 

 

 

 Инф. о  вышеуказанных ордерах в этой ссылке

http://clip2net.com/s/2Tfym

 

простите . помогите пожалуйста. я как двоечник списываю программу с .некоторыми изменениями. мне компилятор выдает ошибку: '(' - function definition unexpected    F:\forex\MetaTrader NordFX\experts\ia.mq4 (305, 16) .

что это значит?

-  пытался убрать этот кусок программы - тоже пишет на следующем.

-  пытался оставить этот кусок без изменения -результат тот же (та же ошибка)

на родной программе компиляция проходит успешно.

 
TarasBY:

Принцип понять можно:



Благодарю!
 
lopuh:

простите . помогите пожалуйста. я как двоечник списываю программу с .некоторыми изменениями. мне компилятор выдает ошибку: '(' - function definition unexpected    F:\forex\MetaTrader NordFX\experts\ia.mq4 (305, 16) .

что это значит?

-  пытался убрать этот кусок программы - тоже пишет на следующем.

-  пытался оставить этот кусок без изменения -результат тот же (та же ошибка)

на родной программе компиляция проходит успешно.

Вам сюда

Судя по ошибке - какую-то функцию определяете внутри другой функции. Все функции должны быть определены на глобальном уровне

 

Нужна помощь.

Ищу любые функцию или скрипт, умеющие делать скрин экрана в некий момент, например, при открытии/закрытии позы.

Когда не надо, то и дело попадались на глаза, а теперь найти не могу.

ХЕЛП!
 
DhP:

Нужна помощь.

Ищу любые функцию или скрипт, умеющие делать скрин экрана в некий момент, например, при открытии/закрытии позы.

Когда не надо, то и дело попадались на глаза, а теперь найти не могу.

ХЕЛП!
К Игоря Кима есть советник, который через заданный интервал времени делает
Причина обращения: