Для баевых ордеров тэйкпрофит должен быть выше цены, а у Вас - ниже
TP=(1-OT_Buy)*(Bid-TakeProfit)+OT_Buy*(Ask+TakeProfit);
и цена должна быть Аск, а не Бид
price=(1-OT_Buy)*Bid+OT_Buy*Ask;
Для баевых ордеров тэйкпрофит должен быть выше цены, а у Вас - ниже
TP=(1-OT_Buy)*(Bid-TakeProfit)+OT_Buy*(Ask+TakeProfit);
и цена должна быть Аск, а не Бид
price=(1-)*Bid+OT_Buy*Ask;
;)
Я Вас очень понимаю, но Вы же не знаете чему равен у меня OT_Buy.
Конкретно, результаты:
2010.07.24 20:51:10 2010.07.01 13:00 EURUSD,H1: Slippage: 2
2010.07.24 20:51:10 2010.07.01 13:00 EURUSD,H1: TakeProfit level: 1.24780000
2010.07.24 20:51:10 2010.07.01 13:00 EURUSD,H1: Price: 1.23380000
2010.07.24 20:51:10 2010.07.01 13:00 EURUSD,H1: Volume: 0.10000000
2010.07.24 20:51:10 2010.07.01 13:00 EURUSD,H1: Command: 0
2010.07.24 20:51:10 2010.07.01 13:00 EURUSD,H1: OrderSend error 130
(Провайдер Броко - суббота, вечер)
Сейчас буде правильно? :)
;)
Я Вас очень понимаю, но Вы же не знаете чему равен у меня OT_Buy.
Посмотрите первый пост
OT_Buy = e.g. 0;
Посмотрите первый пост
OT_Buy = e.g. 0;
Исполните виртуально на пальцах скриптик... :)
Вот строка
ticket=OrderSend(MySymbol,OT_Buy,curlots,price,3,0,TP,"",magic,0); гд
она будет бай, если OT_Buy равна 0.
Или ставьте cmd.
Спасибо! Облажался. В самом деле, каждый раз путаюсь при составлении таких "хитроумных" выражений основанных на одной переменной. К тому же за время писания комментария, несколько раз менял код так, что сам запутался. Прошу прощения если показался заносчивым.
Вопрос решился положительно. Предлагаю вкратце выставить подобные вопросы в краткий ФАК где-то на видном месте. Специально для таких НУБов как я. :)
Однако, остался ещё один вопрос. По поводу вывода в текстовый файл. Моего опыта явно не хватает для решения, почему каждый раз когда я пытаюсь открыть через "filehandle=FileOpen(filename,FILE_READ|FILE_WRITE,' ');" получается как будто я отурывал "filehandle=FileOpen(filename,FILE_WRITE,' ');" (каждый раз переписывается по новой).
У кого есть опыт с такими заморочками, будьте добры, - подтолкните легонько в нужную сторону.
Дык все просто. Читайте справку по FileOpen(), там все расписано:
Если FILE_WRITE не комбинируется с FILE_READ, то будет открыт файл нулевой длины. Даже если до открытия в файле были данные, то они будут уничтожены. Если необходимо дописывать данные в существующий файл, то его нужно открывать, используя комбинацию FILE_READ | FILE_WRITE.
Если FILE_READ не комбинируется с FILE_WRITE, то файл будет открыт только в том случае, если он уже существует. Если файл не существует, то создать его можно, используя режим FILE_WRITE.
Если Вы открываете файл и сразу начинаете в него писать, то все что было до того сотрется. Поэтому надо открыть и найти конец текста.
Если Вы открываете файл и сразу начинаете в него писать, то все что было до того сотрется. Поэтому надо открыть и найти конец текста.
???
Это как в ТурбоПаскале? Надо сделать while eof(filehandle) fileread(filehandle)?
Да уж... Документация и справка оставляют желать лучшего... :(
2Mathemat,
Читал ужо столько раз, что чуть ли не наизусть помню...

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Драсьте! Есть такая ситуация: написал свой эксперт, пустил его на тестер, и выдаётся мне ошибка 130 - уровень стоплосс неверный. Порылся чуть-чуть на форуме, но ничего дельного не нашёл.
О себе. Ниже приведён шмат кода, который выдаёт ошибку.
cmd=1-OT_Buy;
curlots=Lot*(MathFloor(AccountBalance()/LotThreshold))/4;
if(curlots<MarketInfo(MySymbol,MODE_MINLOT))
curlots=MarketInfo(MySymbol,MODE_MINLOT);
if(curlots>MarketInfo(MySymbol,MODE_MAXLOT)/4)
curlots=MarketInfo(MySymbol,MODE_MAXLOT)/4;
if(curlots>0.5) curlots=0.5;
curlots=0.1;
TP=(1-OT_Buy)*(Bid-TakeProfit)+OT_Buy*(Ask+TakeProfit);
price=(1-OT_Buy)*Bid+OT_Buy*Ask;
TP=NormalizeDouble(TP,Digits);
price=NormalizeDouble(price,Digits);
slippage=MarketInfo(MySymbol,MODE_SPREAD);
ticket=OrderSend(MySymbol,OT_Buy,curlots,price,3,0,TP,"",magic,0);
TakeProfit - double = 0.00200;
MYSymbol = "EURUSD";
ТР = 1.3014;
price = 1.2914;
OT_Buy = e.g. 0;
magic = int.
При ошибке все параметры ордера выводятся через принт.
Как вы можете заметить, я даже зафиксировал все переменные определёнными значениями, но результат тот же. Провайдеры - Броко и Альпари.
Кстати будет добавить, что для каждого важного шага я реализовал вывод результатов в файл-лог. К сожалению, в лог выводится только данные отправленные за один сеанс открытия (открытие через команду filehandle=FileOpen(filename,FILE_READ|FILE_WRITE,' ');). Процедура такова: после каждого GetLastError() открываю файл через указанную команду, вывожу в файл парочку строк, затем FileFlush(filehandle); FileClose(filehandle);. Так вот в файле сохраняется только последние вызовы открытия/записи/закрытия, как будто filehandle=FileOpen(filename,FILE_WRITE,' ');. Конфуз!
Может быть в выходные, когда рынок закрыт так и должно быть %)?
Заранее глабодарю