Проблемы с тестером стратегий!!!

 

Решил советник провести по истории - открывает только короткие позиции, несмотря на то, что в свойствах позначил открытие в обе стороны. Подскажите, пожалуйста, в чем проблемы? в коде?

2) можно ли ТР настроить "скользящим" (чтобы по мере роста/падения цены перемещался вверх/вниз) или он прописывается только "жестко"?

3) чтобы заходить по цене на один пункт отличающейся от МА можно ли прописать это как (Price= iMA(...) +/- Point)? или это нужно прописать немного по другому?

 
Evgen117:

Решил советник провести по истории - открывает только короткие позиции, несмотря на то, что в свойствах позначил открытие в обе стороны. Подскажите, пожалуйста, в чем проблемы? в коде?

2) можно ли ТР настроить "скользящим" (чтобы по мере роста/падения цены перемещался вверх/вниз) или он прописывается только "жестко"?

3) чтобы заходить по цене на один пункт отличающейся от МА можно ли прописать это как (Price= iMA(...) +/- Point)? или это нужно прописать немного по другому?

Судя по вопросам, проблемы с программистом, а не с тестером стратегий )

По первому пункту, кода не видно, ответить никто не сможет.

2) такое называется трейлинг уровня тэйкпрофита, аналогично трейлингу уровня стоплосса, реализуется так же.

3) "немного по-другому" - это слишком мягко сказано...

 
evillive:

Судя по вопросам, проблемы с программистом, а не с тестером стратегий )

По первому пункту, кода не видно, ответить никто не сможет.

2) такое называется трейлинг уровня тэйкпрофита, аналогично трейлингу уровня стоплосса, реализуется так же.

3) "немного по-другому" - это слишком мягко сказано...


1) // Торговые критерии
_VHL = Low[iLowest(Symbol(),0,1,KPeriod,0)];

_VHH = High[iHighest(NULL,0,2,KPeriod,0)];

if (_VHH <= NormalizeDouble(MODE_ASK,Digits))

{

Opn_B=true;

}

if (_VHL >= NormalizeDouble(MODE_BID,Digits))

{

Opn_S=true;

}

while(true)

{

if (Total==0 && Opn_B==true)

{

RefreshRates();

SL=Bid - New_Stop(StopLoss)*Point;

TP=Bid + New_Stop(TakeProfit)*Point;

Alert("Попытка открыть Buy. Ожидание ответа..");

Ticket=OrderSend(Symb,OP_BUY,Lts,MarketInfo(Symbol(),MODE_ASK),2,SL,TP);

if (Ticket > 0)

{

Alert ("Открыт ордер Buy ",Ticket);

return;

}

if (Fun_Error(GetLastError())==1)

continue;

return;

}

это часть кода, весь не сбрасываю, поскольку в короткие позиции заходит

2) в коде я так понимаю как раз и прописан "трэйлинг уровня ТР/СЛ"?

3) Дайте пожалуйста, наводку, где почитать, как правильно это прописать.

 

В журнале прям таки никаких ошибок не появляется при попытках войти в покупку? Может там всегда в такой момент есть незакрытая короткая позиция и стоит её закрыть перед попыткой купить?

И хде там "трейлинг"? В предоставленном куске кода нету приказов на модификацию позиций.

Касаемо кода на сравнение текущей цены с уровнем МА, так в кодобазе полно советников, так или иначе применяющих МА, совершенно бесплатных. Да и в поставке терминала есть один, "Moving Average".

 
evillive:

В журнале прям таки никаких ошибок не появляется при попытках войти в покупку? Может там всегда в такой момент есть незакрытая короткая позиция и стоит её закрыть перед попыткой купить?

И хде там "трейлинг"? В предоставленном куске кода нету приказов на модификацию позиций.

Касаемо кода на сравнение текущей цены с уровнем МА, так в кодобазе полно советников, так или иначе применяющих МА, совершенно бесплатных. Да и в поставке терминала есть один, "Moving Average".


1) в том то и дело - не выдает никакой ошибки (разве что я тоже подумал про то, что может накладываются друг на друга короткие и длинные, поставил в свойствах входы только на длинных и вот тогда мне впервые выдало ошибку - 4111 (запрещены короткие)) - так что не знаю - это в коде ошибка или ну не знаю... проблемы с ДЦ (О_о) .... прям бермудский треугольник.

2) с Ваших слов я понял, что "трейлинг" нужно прописывать через модификацию (OrderModifу)???

3) Ок, спс, посмотрю, но (я могу ошибаться) те коды на имашки, которые я видел - так просто прописано тупое вхождение при "одна имашка больше/меньше другой" - имею ввиду, что эти параметры входа могут длиться днями/неделями/месяцами, а я именно думал, как прописать чтобы вошло при цене, отличающейся от имашки на один пункт (грубо говоря, на пробой), или такие советники тоже есть?

 

1) Внимательно прочитайте устав ДЦ

2) Да, именно через OrderModifу, опять же в кодобазе примеров реализации тысячи

3) Никто не мешает сравнивать не две МА, а цену и МА. Но такая стратегия (пробоя МА) заведомо убыточна, проверено поколениями трейдеров.

 
Evgen117:

1) // Торговые критерии
_VHL = Low[iLowest(Symbol(),0,1,KPeriod,0)];

_VHH = High[iHighest(NULL,0,2,KPeriod,0)];

if (_VHH <= NormalizeDouble(MODE_ASK,Digits))

{

Opn_B=true;

}

if (_VHL >= NormalizeDouble(MODE_BID,Digits))

{

Opn_S=true;

}

while(true)

{

if (Total==0 && Opn_B==true)

{

RefreshRates();

SL=Bid - New_Stop(StopLoss)*Point;

TP=Bid + New_Stop(TakeProfit)*Point;

Alert("Попытка открыть Buy. Ожидание ответа..");

Ticket=OrderSend(Symb,OP_BUY,Lts,MarketInfo(Symbol(),MODE_ASK),2,SL,TP);

if (Ticket > 0)

{

Alert ("Открыт ордер Buy ",Ticket);

return;

}

if (Fun_Error(GetLastError())==1)

continue;

return;

}

это часть кода, весь не сбрасываю, поскольку в короткие позиции заходит

2) в коде я так понимаю как раз и прописан "трэйлинг уровня ТР/СЛ"?

3) Дайте пожалуйста, наводку, где почитать, как правильно это прописать.

где в Вашем коде упоминание про селл ордер? открытие?
 
evillive:

1) Внимательно прочитайте устав ДЦ

2) Да, именно через OrderModifу, опять же в кодобазе примеров реализации тысячи

3) Никто не мешает сравнивать не две МА, а цену и МА. Но такая стратегия (пробоя МА) заведомо убыточна, проверено поколениями трейдеров.


По поводу функции OrderModifу - она единоразовая или повторяется (имею ввиду, если пропишу какуюто переменную (например, ТР=Бид*какой-то индекс(1.012 например)) - у меня (точнее в открытой позиции) будет изменяться ТР каждый раз при новом поступлении? а можно как-то зафиксировать? например, чтобы на следующем биде после Опенпрайс оно пересчитало мне ТР и больше не пересчитывало?
 
Evgen117:

По поводу функции OrderModifу - она единоразовая или повторяется (имею ввиду, если пропишу какуюто переменную (например, ТР=Бид*какой-то индекс(1.012 например)) - у меня (точнее в открытой позиции) будет изменяться ТР каждый раз при новом поступлении? а можно как-то зафиксировать? например, чтобы на следующем биде после Опенпрайс оно пересчитало мне ТР и больше не пересчитывало?

как закодить - так и будет...
 
evillive:

как закодить - так и будет...

Спс
Причина обращения: