Учусь писать советника... - страница 3

 
По прежнему есть 1 ошибка OrderSend error 130.. От чего это зависит?
 
paukas >>:

Скачайте минутные свечки (напимер с альпари) и делайте тест на минутках.

Как я буду делать тест на минутках, если у меня MТС для  H4?.. 

Тестить на 4-часовиках стоп в 5 пунктов- нельзя.

Почему нельзя?
 

В статье  Automated Trading Championship 2007: распространенные ошибки в экспертах
прочитал что ошибка OrderSend error 130 (ERR_INVALID_STOPS) - это неправильные или слишком близко расположенные стопы.

Позвонил в ДЦ, спросил на каком минимальном расстоянии можно установить стоп - ответили такого ограничения нет.. Странно!

И ещё не пойму один момент.. Если я вручную открываю ордер, то в нем на самом-то деле никак нельзя установить стоп и профит...Как тогда это делает функция OrderSend()?

Проверил вручную выставить ордер, а потом поставить стоп.. минимум 4 пп дают ставить от цены открытия - т.е. текущей цены...

Теперь придется извращаться с OrderModify().. Зачем тогда нужен stoploss в OrderSend() ?

 
ALex2008 >>:

Как я буду делать тест на минутках, если у меня MТС для  H4?.. 

Почему нельзя?

Тест на самом малом ТФ делается так 

Вы пишите  вызовы  так ( для примера взял  )

   wpr[1] =   iWPR ( Symbol(), 10, PERIOD_H4, 1 );
   wpr[2] =   iWPR ( Symbol(), 20, PERIOD_H4, 1 );
   wpr[3] =   iWPR ( Symbol(), 40, PERIOD_H4, 1 );
   wpr[4] =   iWPR ( Symbol(), 60, PERIOD_H4, 1 );


и запускаейте на любом ТФ самым  эффективным и правильным тест будет - если его запустить на минутках!

т е он будет самым правдивым

---

 к сожалению на тиках не прогнать! ибо нет тиковой истории в тестере МТ4


---

Приучайтесь сразу писать ТФ ! и тогда Вашей EA будет все равно на каком ТФ ее запустили

вместо констант разумно писать параметры - я для простоты кода и  более понятного фосприятия влепил константы

 

Юрий) Я ж не профи в этом деле...) Вы хоть опишите что это значит чтоб до меня дошло.. wpr[1] = iWPR ( Symbol(), 10, PERIOD_H4, 1 );

 
ALex2008 >>:

Юрий) Я ж не профи в этом деле...) Вы хоть опишите что это значит чтоб до меня дошло.. wpr[1] = iWPR ( Symbol(), 10, PERIOD_H4, 1 );

iWPR это индикатор встроенный 

double iWPR( string symbol, int timeframe, int period, int shift) 
Расчет индикатора Larry Williams' Percent Range. 
Параметры:
symbol - Символьное имя инструмента, на данных которого будет вычисляться индикатор. NULL означает текущий символ. 
timeframe - Период. Может быть одним из периодов графика. 0 означает период текущего графика. 
period - Период(количество баров) для вычисления индикатора. 
shift - Индекс получаемого значения из индикаторного буфера (сдвиг относительно текущего бара на указанное количество периодов назад). 

Пример:
if(iWPR(NULL,0,14,0)>iWPR(NULL,0,14,1)) return(0);

   в хелпе описан он, посмотрите 

wpr[...] это массив куда от каждого индикатора с разным периодом скдадывается результат

( вы можете назвать массив как хотите )

double wpr[5] ;

  wpr[1] = iWPR ( Symbol(), 10, PERIOD_H4, 1 );
  wpr[2] = iWPR ( Symbol(), 20, PERIOD_H4, 1 );
  wpr[3] = iWPR ( Symbol(), 40, PERIOD_H4, 1 );
  wpr[4] = iWPR ( Symbol(), 60, PERIOD_H4, 1 );


я просто показал вызов  с разными периодами...

суть была в идеи писать в индикаторах сразу период! что бы тестить можно было на любом ТФ

 
если суть была в идеи писать в индикаторах сразу период! что бы тестить можно было на любом ТФ - то я понял... -В советнике нет индикаторов, есть только свечи H4(как индикатор). -ТФ я сейчас постараюсь учесть везде в коде и тогда можно будет тестить на любом ТФ)
 

Решил делать модификацию открытого ордера...

сразу после OrderSend

      if (OrderSelect(0,SELECT_BY_POS)==true)
        if (OrderType()==OP_BUY)
          OrderModify(OrderTicket(),OrderOpenPrice(),Stop,Take,colorBaySell);


В журнале ошибка:

invalid ticket for OrderModify function
11:43:54 2005.01.26 13:12  EURUSD: OrderModify error 4051
Подскажите что не так?

 

Нужно задать новые значения стопов примерно так: :

OrderModify(OrderTicket(), OrderOpenPrice(), Bid-Stop*Point,.....
                                                    
где новый стоп задан - в пунктах(в целых числах)
 

А MarketInfo() который используется при OrderClose нужен для OrderModify?