Советник, который после запуска следил бы за курсом пятиминутного графика с условиями: - страница 5
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
int start() { //---- if (iOpen(NULL,5,0)-Bid>Delta*Point) //Цена упала больше Delta пунктов { OrderSend(Symbol(),OP_BUY,Ask,5,0,Ask+TakeProfit*Point,0); } if (iOpen(NULL,5,0)-Bid<Delta*Point) //Цена выросла больше Delta пунктов { OrderSend(Symbol(),OP_SELL,Ask,5,0,Ask+TakeProfit*Point,0); } //---- return(0); }Что не так?
Функция OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)
Параметры: symbol - Наименование финансового инструмента, с которым проводится торговая операция.
cmd - Торговая операция. Может быть любым из значений торговых операций.
volume - Количество лотов.
price - Цена открытия. slippage - Максимально допустимое отклонение цены для рыночных ордеров (ордеров на покупку или продажу).
stoploss - Цена закрытия позиции при достижении уровня убыточности (0 в случае отсутствия уровня убыточности).
takeprofit - Цена закрытия позиции при достижении уровня прибыльности (0 в случае отсутствия уровня прибыльности).
comment - Текст комментария ордера. Последняя часть комментария может быть изменена торговым сервером.
magic - Магическое число ордера. Может использоваться как определяемый пользователем идентификатор.
expiration - Срок истечения отложенного ордера.
arrow_color - Цвет открывающей стрелки на графике. Если параметр отсутствует или его значение равно CLR_NONE, то открывающая стрелка не отображается на графике.
А у вас где это? - у вас какой то огрызок вместо OrderSend
А какая цена получится в результате вычисления Ask*Point здесь:
???Вот полный код:
Для быстрого тестирования я установил Delta=2
extern int Delta=2;
Может как то можно вот это внедрить для понимания ошибок:
//+------------------------------------------------------------------+ bool IsCondition() { bool result=true; string field=" "; string msg; string title="Ошибка"; if (AccountNumber()>0)title=AccountNumber()+": "+title; if (!IsConnected()) { msg=msg+"Связь с сервером отсутствует"+field; result=false; } if (!IsTradeAllowed()) { if (!result) msg=msg+"\n"; msg=msg+"Торговля запрещена"+field; result=false; } if (!result) MessageBox(msg,title,MB_OK|MB_ICONERROR); return(result); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ void ShowError() { string description; int err=GetLastError(); switch(err) { case 0: return; case 1: description="Нет ошибки, но результат неизвестен"; break; case 2: description="Общая ошибка"; break; case 3: description="Неправильные параметры"; break; case 4: description="Торговый сервер занят"; break; case 5: description="Старая версия клиентского терминала"; break; case 6: description="Нет связи с торговым сервером"; break; case 7: description="Недостаточно прав"; break; case 8: description="Слишком частые запросы"; break; case 9: description="Недопустимая операция нарушающая функционирование сервера"; break; case 64: description="Счет заблокирован"; break; case 65: description="Неправильный номер счета"; break; case 128: description="Истек срок ожидания совершения сделки"; break; case 129: description="Неправильная цена"; break; case 130: description="Неправильные стопы"; break; case 131: description="Неправильный объем"; break; case 132: description="Рынок закрыт"; break; case 133: description="Торговля запрещена"; break; case 134: description="Недостаточно денег для совершения операции"; break; case 135: description="Цена изменилась"; break; case 136: description="Нет цен"; break; case 137: description="Брокер занят"; break; case 138: description="Новые цены"; break; case 139: description="Ордер заблокирован и уже обрабатывается"; break; case 140: description="Разрешена только покупка"; break; case 141: description="Слишком много запросов"; break; case 145: description="Модификация запрещена, так как ордер слишком близок к рынку"; break; case 146: description="Подсистема торговли занята"; break; case 147: description="Использование даты истечения ордера запрещено брокером"; break; default : description="Неизвестная ошибка"; break; } string field=" "; string msg="Ошибка #"+err+" "+description+field; string title="Ошибка"; if (AccountNumber()>0)title=AccountNumber()+": "+title; MessageBox(msg,title,MB_OK|MB_ICONERROR); } // End //+------------------------------------------------------------------+У меня не работает почему то......
Вот полный код:
if (iOpen(NULL,5,0)-Bid>Delta*Point) //Цена упала больше Delta пунктов { ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"My order #",MagicNumber,0,Green); } if (iOpen(NULL,5,0)-Bid<Delta*Point) //Цена выросла больше Delta пунктов { ticket=OrderSend(Symbol(),OP_SELL,1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"My order #",MagicNumber,0,Green); } //---- return(0); } //+------------------------------------------------------------------+Вообще то OrderSend для покупки и для продажи пишутся чуть по разному. Потому, что покупаем мы по цене Ask, а продаем по цене Bid ! И закрытие по стопам тож... У вас же - всё по одной цене ...И кроме того, здесь предусмотрена работа лотом=1. У вас депозит соответсвует этому размеру? И что в журнале написано, - почему не работает?
Вы не знаете разницу между Bid и Ask, Вы не понимаете разницы между короткой и длинной позицией. Вы не имеете понятие о том что такое Стоплосс и Тейкпрофит. Вы непонимаете того, что уже написали. Вы пытаетесь кодить методом тыка. Кто Вам сможет помочь???? Учите мат. часть. Ответы на все вопросы даны. Смысла цитировать Вам учебник я не вижу.
У меня не работает почему то......
Для быстрого тестирования я установил Delta=2
extern int Delta=2;
А зачем? А тестером вы умеете пользоваться?
У меня был знакомый паренёк. Он уже год подторговывал на форексе и всё ещё думал, что длинная позиция, - это которая долго в рынке находится. А короткая, - это которая - "ну типа пипсовочная, мля..." !
А вы как думаете?