[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 165

 
FelixFX:

спасибо

при компиляции много ошибок выявлено
 
RoniIron:

Прошу прощения...... советник мартингейл, можно в нем прописать стоплосс или это невозможно. Спасибо.

Функция OrderSend() имеет одним из своих параметров - стоп-лосс. И именно она устанавливает ордер. Поэтому рассчитываем уровень установки стопа для нужного нам ордера и вносим его в функцию.
 
FelixFX:

при компиляции много ошибок выявлено

Ну дык так оно и будет - я же предупредил, что там МОИ подпрограммы задействованы! Уберите их и впишите на их место свои принты с запросом GetLastError()
 
drknn:

Ну дык так оно и будет - я же предупредил, что там МОИ подпрограммы задействованы! Уберите их и впишите на их место свои принты с запросом GetLastError()

Это просто выполнить, если хорошо ориентироваться в mql. ) Я только учусь, и поэтому для меня убрать все лишнее, а оставить только нужное несколько затруднительно.
 
// =================================================================================================
// ************************* Трейлинг рыночных ордеров *********************************************
// =================================================================================================


// =================  TrailingRyn() =============================================================
// функция осуществляет трейлинг рыночных ордеров 
// ----------------------------------------------
void TrailingRyn_b(int ryn_TrStop, int ryn_TrStep, int Proskalz, int MAGIC, bool WaitProfit,  bool UseTrailingSound) {
  string SMB=Symbol(); 
  int i;
  int MinLevel=MarketInfo(SMB,MODE_STOPLEVEL);//Минимально допустимый уровень стоп-лосса/тейк-профита в пунктах   
  int SchBuy=SchBuy(MAGIC);
  int SchSell=SchSell(MAGIC);
  if(ryn_TrStop>=MinLevel && ryn_TrStep>0 && (SchBuy>0 || SchSell>0)){    
    for (i=OrdersTotal()-1;i>=0;i--){
      if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {Print("Ошибка № ",GetLastError()," при выборе ордер № ",i);}
      else {
        if (OrderSymbol()==SMB && OrderMagicNumber()==MAGIC){
          TrailingPositions_b(ryn_TrStop,ryn_TrStep,Proskalz,WaitProfit,UseTrailingSound);
        }
      }
    }
  }
 if(ryn_TrStop>=MinLevel && ryn_TrStep==0)
 Print("Трейлинг невозможен - ryn_TrStep==0");
} 
// =================================================================================================

//+------------------------------------------------------------------+
//| Сопровождение позиции простым тралом                             |
//+------------------------------------------------------------------+
void TrailingPositions_b(int ryn_TrStop, int ryn_TrStep, int Proskalz, bool WaitProfit, bool UseTrailingSound){
  if(OrderType()==OP_BUY){
    if(!WaitProfit || (Bid-OrderOpenPrice())>ryn_TrStop*Point){
      if (OrderStopLoss()<Bid-(ryn_TrStop+ryn_TrStep-1)*Point){
        ModifyStopLoss_b(Bid-ryn_TrStop*Point,UseTrailingSound);
      }
    }
  }
  if(OrderType()==OP_SELL){
    if(!WaitProfit || OrderOpenPrice()-Ask>ryn_TrStop*Point) {
      if(OrderStopLoss()>Ask+(ryn_TrStop+ryn_TrStep-1)*Point || OrderStopLoss()==0){
        ModifyStopLoss_b(Ask+ryn_TrStop*Point,UseTrailingSound);
      }
    }
  }
}

//+------------------------------------------------------------------+
//| Перенос уровня StopLoss                                          |
//| Параметры:                                                       |
//|   ldStopLoss - уровень StopLoss                                  |
//+------------------------------------------------------------------+
void ModifyStopLoss_b(double ldStopLoss, bool UseTrailingSound){
  bool fm=false;
  string NameTrallingSound  = "ok.wav";// Наименование звукового файла для трейлинга
  fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldStopLoss,OrderTakeProfit(),0,CLR_NONE);
  if(fm!=0 && fm!=-1){
    if(UseTrailingSound) { PlaySound(NameTrallingSound);}
  }   
  if(fm==0 || fm==-1) { Print("Ошибка № ",GetLastError()," при модификации ордера № ",OrderTicket());}
}
//+------------------------------------------------------------------+
 
VOLDEMAR:
Спасибо парни.....
а как с помощью iCustom и ндикатора который рисует стрелку в какойто момент показать советнику что надо открыться .....
Если iBands там если Ask > BBUP то это понятно а как с обьектом который стрелка и может появиться а может и нет (типа стрелка )??????


Всё равно нужно смотреть код индикатора, чтоб понять в каком из буфферов лежит значение какой из линий.

Если же Вы хотите вносить параметры индикатора в функцию iCustom, то нужно параметры индикатора внести в пользовательские перемнные советника. В противном случае советник просто не поймёт, какие значения лежат в перечисленных переменных.

 
Здравствуйте! Просьба не пинать, если что то спрашиваю не то,но перекопал весь форум и просторы интернета - и не нашел то что искал. Вопрос такой! Возможно ли создать условие в if(после последнего StopLoss(по времени) должно закрыться например 2 профита) пока их нет делаем else ... И если возможно небольшой набросок в коде, но можно и просто словами схемку нарисовать-заранее спасибо!
 
ruzzo:
Здравствуйте! Просьба не пинать, если что то спрашиваю не то,но перекопал весь форум и просторы интернета - и не нашел то что искал. Вопрос такой! Возможно ли создать условие в if(после последнего StopLoss(по времени) должно закрыться например 2 профита) пока их нет делаем else ... И если возможно небольшой набросок в коде, но можно и просто словами схемку нарисовать-заранее спасибо!


Вообще, ну совершенно не понятно что конкретно Вам нужно.

Условие в if() воткнуть можно. Можно воткнуть после наступления любого события. Но вот что значит "закрываться два профита"? И else делать можно. Делов то...


if(условие){

// какой-то код 

}

else{

// какой-то код 

} 
 
drknn:


Вообще, ну совершенно не понятно что конкретно Вам нужно.

Условие в if() воткнуть можно. Можно воткнуть после наступления любого события. Но вот что значит "закрываться два профита"? И else делать можно. Делов то...


это то я понимаю что сначала условие -а потом код, но я хотел создать условие, получил я StopLoss и работаю в else другим лотом например - пока не закрою сделки двумя профитами -просто я не хочу в if баланс сравнивать ! всё к тому что если я сравниваю баланс, а ордера у меня отложные с ограничением по времени -изменённый лот проскакивает мимо - так как ордер истекает вместе с увеличенным лотом - может я не правильно копаю?
 

Помогите plz разобраться.

Решил поюзать MACD Sample и не как не могу понять в чём дело ! при чём не важно какой версии, даже родной с терминала.

все выдают ошибку :

2011.02.28 23:01:53 MACD Sample EURUSD,M15: Error opening BUY order : 130

Счёт 5 знаков. 1:500, лот 0.1 или 1 без разницы, счёт реал.

Увеличил SL и TP в 10 раз, ничего не изменилось, менял даже более, никакого результата, чтобы добиться чтобы он что-то там сам открыл (((

В том что он работает понятно, если открыть руками сделку, при он после сам переводит её в без убыток и начинает тралить, но сам открывать ни в какую не хочет !

Ну что я такое неправильно делаю, понять не могу уже неделю !?

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