Мы постоянно стараемся улучшать встроенный в ДД компилятор языка EasyLanguage. Но чтобы работа пошла быстрее и оказала реальную помощь пользователям в разработке собственных скриптов, нам нужна ваша помощь.
ПРОСЬБА: постить в этой ветке скрипты или отрывки скриптов, которые не проходят компиляцию в ДД, а диагностика выдаваемая компилятором кажется вам неудовлетворительной и не позволяет быстро локализовать ошибку. Мы внесем соответствующие изменения в компилятор.
Наша цель в том, чтобы компилятор помогал начинающим пользователям в освоении языка и мы очень надеемся на ваше содействие!
If MA1 Cross Above MA2 And MACD2 > 0 And LogicOpenBuy = False And LogicOpen = False And MACD1 > MACD2 And MA2 > MA3 And MA3 > MA4 then Begin
Buy ("MA_Bay") This Bar on Close;
PriceOpen = Close;
LogicOpen = true;
LogicOpenBuy = true;
PlaySound("");
End;
If Open < PriceOpen - StopLossBuy Points And LogicOpenSell = False then Begin
ExitLong ("StopBuy") This Bar On Close;
LogicOpen = False;
LogicOpenBuy = False;
PriceOpen = 0;
PlaySound("");
End;
If Open > PriceOpen + ProfitBuy Points And LogicOpenSell = False then Begin
ExitLong This Bar On Close;
LogicOpen = False;
LogicOpenBuy = False;
PriceOpen = 0;
PlaySound("");
End;
{Продажа}
If MA1 Cross Below MA2 And MACD1 < MACD2 And MACD2 < 0 And MA3 > MA2 And MA4 > MA3 And LogicOpen = False And LogicOpenSell = False then Begin
Sell ("MA_Sell") This Bar on Close;
PriceOpen = Close;
LogicOpen = true;
LogicOpenSell = true;
PlaySound("");
End;
If Open > PriceOpen + StopLossSell Points And LogicOpenBuy = False then Begin
ExitShort ("StopSell") This Bar On Close;
LogicOpen = False;
LogicOpenSell = False;
PriceOpen = 0;
PlaySound("");
End;
If Open < PriceOpen - ProfitSell Points And LogicOpenBuy = False then Begin
ExitShort This Bar On Close;
LogicOpen = False;
LogicOpenSell = False;
PriceOpen = 0;
PlaySound("");
End;
Например:
23.05.2008г. Сделка в минутках по GBP/USD открылась против условия... На MACD plot1 ниже plot2 соответственно MACD1 и MACD2, а сделка отврывается на покупку...
Жаль почему то скришот не прикрепился...
Приношу свои извенения... Не доглядел...
Забыл перииминовать переменные в индикаторе... Они зависисли от параметров средних поэтому и при оптимизации параметры MACD не давали результатов...
Есть проблемы с датой...
Допустим мне нада чтобы стратегия применяла разные алгоритмы для летнего и зимнено времени. Тут можно было бы поступить так зимнее время если данное время бара больше 30го октября и меньше 20 марта и наоборот для летнего. Но проблема в том что нельзя указать просто день и месяц, надо ещё указывать год... А если ввести год то день и месяц опускаются...
И ещё с временем проблема...
Допустим моей стратегии надо производить определенные действия каждае 15 минут, так как дата записывается в виде числа 0000 то + 15мин. будет 0015 а если попадается такой случай как 0050 то получается 0065 а должно получится 0105... И по этому при наступлении 0100 срабатывает условие так как 0065 меньше 0100...
Может всётаки я недостаточно внимательно смотрел и есть варианты на такие случаи... Если нет то надо что то делать... Хотя бы даты ввести без года...
Почему не работает этот скрипт?
Input:Price((H+L)/2),Length(288),LengthMon(252),Lotts(1),Profit(150),SteepLoss(45),TrailStop(40);
Var:DayHigh(0),DayLow(0),BuyTrail(False),SellTrail(False),ActPrice(0),NewActPrice(0);
If MarketPosition = 0 Then begin BuyTrail = False; SellTrail = False; end;
If time=Sess1StartTime and MarketPosition = 0 then begin
DayHigh = Highest(Price,Length);
DayLow = Lowest(Price,Length);
If DayOfWeek = 2 then Begin
DayHigh = Highest(Price,LengthMon);
DayLow = Lowest(Price,LengthMon);
end;
end;
If Price > DayHigh+5 points and MarketPosition = 0 then begin
Buy ("Buy") Lotts Contracts This Bar on Close;
ExitLong ("BuyStop") Lotts Contracts Next Bar at DayLow Stop;
Exitlong ("BuyLimit") Lotts Contracts Next Bar at DayHigh+Profit points Limit;
End;
If Price < DayLow-5 points and MarketPosition = 0 then begin
Sell ("Sell") Lotts Contracts This Bar on Close;
ExitShort ("SellStop") Lotts Contracts Next Bar at DayHigh Stop;
ExitShort ("SellLimit") Lotts Contracts Next Bar at DayLow-Profit points Limit;
End;
If MarketPosition = 1 and Price > DayHigh+SteepLoss points and BuyTrail = False then begin
ExitLong ("BuyTrailStop") Lotts Contracts Next Bar at DayHigh+5 points Stop;
Exitlong ("BuyLimit") Lotts Contracts Next Bar at DayHigh+Profit points Limit;
BuyTrail = True; ActPrice=high-TrailStop points;
End;
If MarketPosition = -1 and Price < DayLow-SteepLoss points and SellTrail = False then begin
ExitShort ("SellTrailStop") Lotts Contracts Next Bar at DayLow-5 Stop;
ExitShort ("SellLimit") Lotts Contracts Next Bar at DayLow-Profit points Limit;
SellTrail = True; ActPrice=low+TrailStop points;
End;
If BuyTrail=True then begin
NewActPrice=high-TrailStop points;
If NewActPrice > ActPrice Then ActPrice = NewActPrice;
ExitLong("BuyTrailStop") Next Bar at ActPrice Stop;
end;
If SellTrail=True then begin
NewActPrice=low+TrailStop points;
If NewActPrice < ActPrice Then ActPrice = NewActPrice;
ExitShort("SellTrailStop") Next Bar at ActPrice Stop;
end;
Компиляцию проходит нормально... А когда применяю то выкидывает окно - произошла ошибка при вычислении индикатора. Индикатор будет выключен...
Окно называется - Sentinel Spore
Нашел ошибку... Как всегда невнимательность...
Но вот странно почему проходит компиляцию при некоректно заполненом операторе...
If DayOfWeek = 2 then Begin
Не указал дату
If DayOfWeek(Date) = 2 then Begin
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщению Вы можете загружать файлы