Здравствуйте.
Пишу советник... И вот застрял на учете ордеров.
Мне надо что бы ордера, максимум было только два. То есть, если появляется новый то старый удаляться.
Вот код советника...
Ах да... Проблема в том что старый ордер почему-то не удаляться!
Что не так ведь я пишу что OrderDelete();
В OrderDelete надо тикет указывать, а вы в него маджикнумбер пихаете.
Спасибо! Понял! :)
Хм....
А теперь что не так?
Следуя логике жолжно же быть не более 2х ордеров. А у меня их, ух сколько...
//+------------------------------------------------------------------+ //| Lolita.mq4 | //| Copyright © 2011, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2011, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- bool b,s; double maTrend = iMA(NULL,0,13,8,MODE_SMMA,PRICE_MEDIAN,0); double maCorrektion = iMA(NULL,0,8,5,MODE_SMMA,PRICE_MEDIAN,0); double fUp = iFractals(NULL, 0, MODE_UPPER, 3); double fLow = iFractals(NULL, 0, MODE_LOWER,3); int DellB, DellS; if(Bars<100) { Alert("Недостаточно баров"); return; } if(Low[1] < maCorrektion) { b = true; } if(High[1] > maCorrektion) { s = true; } if(maTrend < fUp) { if(b == true) { OrderDelete(DellB); DellB = OrderSend(Symbol(), OP_BUYSTOP, 1, fUp, Ask, fUp-300*Point,fUp+900*Point,NULL,777,0,Green); b = false; } } if(maTrend > fLow) { if(s == true) { OrderDelete(DellS); DellS = OrderSend(Symbol(), OP_SELLSTOP, 1, fLow, Bid, fLow+300*Point,fLow-900*Point,NULL,13,0,Red); s = false; } } //---- return(0); } //+------------------------------------------------------------------+
Хм....
А теперь что не так?
Следуя логике жолжно же быть не более 2х ордеров. А у меня их, ух сколько...
int DellB, DellS;
Да помогло. Огромное Вам спасибо.
И ещё такой вопрос... Последний...
Какой функцией взять последнее значение фрактала а то iFractals(NULL, 0, MODE_LOWER,3); берет его некорректно. То есть в тестере некоторые фракталы просто пропускает, иногда берет значение где вообще фрактала нет и т.д.
Заранее Благодарен.
jhon:
То есть в тестере некоторые фракталы просто пропускает, иногда берет значение где вообще фрактала нет и т.д.
это очень серъезное и громкое обвинение. если у вас есть доказательство, то обязательно сообщите разработчикам терминала про этот глюк.
а то получается все кроме вас пользуются функцией без проблем а вы смогли за 5 минут отыскать этот баг. удивительно.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте.
Пишу советник... И вот застрял на учете ордеров.
Мне надо что бы ордера, максимум было только два. То есть, если появляется новый то старый удаляться.
Вот код советника...
Ах да... Проблема в том что старый ордер почему-то не удаляться!
Что не так ведь я пишу что OrderDelete();