[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 142

 
E_mc2 >> :

Se sei preoccupato di dormire troppo, cambia questa linea

\ se ( WarningMode>0 ) PlaySound(soundfile); \

indicatore a questo

\ se ( WarningMode>0 && shift==0) GlobalVariableSet("Alarm",1); \

e creare un indicatore come questo

int start()
{if(GlobalVariableGet("Будильник"))PlaySound("news.wav");
return(0);
}

E quando ti addormenti non solo imposti l'indicatore principale ma anche la sveglia.

La sveglia può essere disattivata manualmente cambiando il valore 0 nella variabile Sveglia tramite il tasto F3.

 
Urain >> :

A cosa ti serve? Dimmi di più, forse c'è una soluzione, e tu non sai come fare le domande giuste perché la gente capisca.

Ho due soluzioni per quello che hai scritto, ci vorrebbe troppo tempo per scriverne due in una volta :)

..

A proposito, è meglio allegare codici così lunghi come un file.

E per il codice c'è un pulsante speciale SRC

Sì, mi serve per non perdere il segnale). Una volta che solo un allarme scatta, è facile non vederlo, soprattutto di notte(((( Cosa significa - allarme?? Cosa succederà?

Ho cambiato la linea... Ho creato un nuovo indicatore Alarm..... ma non capisco... funziona sempre indipendentemente dal fatto che l'indicatore emetta o meno un segnale... Anche se non c'è nessun segnale dall'indicatore, la sveglia suona continuamente)))) Non c'è nessun segnale, ma la sveglia funziona...

 
E_mc2 >> :

Ne ho bisogno per non perdere il segnale)) Suona solo un allarme una volta, facile da perdere soprattutto di notte(((( E cosa significa - allarme??? Cosa succederà?

Cambia la linea nel tuo indicatore come descritto sopra.

Compila ed esegui l'indicatore allegato.

Suonerà ad ogni tick, finché non disabiliterete l'indicatore o resetterete la variabile globale "Alarm".

File:
wxinptvxq.mq4  1 kb
 

Consulente esperto di media mobile .

Ho inserito delle funzioni KimIV per aprire un ordine (GetSizeLot() OpenPosition CorrectTF(int TimeFrame=0) GetNameOP(int op) ModifyOrder() ExistPositions() Message()). Non aveva ancora raggiunto la chiusura. Ho creato la propria funzione di dati dell'indicatore void Indicat_Var(), per avere i dati dell'indicatore in un posto e per utilizzarli in qualsiasi punto del programma.

Quando si accede con la funzione CheckForOpen() a Indicat_Var() tutto va bene, ma quando si accede con la funzione CheckForClose() a Indicat_Var() gli ordini non vengono chiusi, non capisco perché

Penso anche che le funzioni CalculateCurrentOrders(string symbol) e ExistPositions() si duplichino a vicenda.

Per favore aiutatemi a capire

File:
magkimiv.mq4  15 kb
 

La funzione di calcolo dei lotti era originariamente fornita nell'EA. Se ne hai aggiunto un altro (GetSizeLot()), allora (almeno) rimuovi quello originale - LotsOptimized()

//------------------------------------------------

Infatti. Le funzioni che determinano la presenza di posizioni aperte si duplicano a vicenda.

Uno di loro può essere rimosso. (Impara come differiscono, e quale ti serve di più!)

//--------------------------------------------

Vedere https://www.mql5.com/ru/articles/1385

Lì, proprio lì, c'è una modifica di questo EA con commenti russi nel codice.

Modifica, - Esattamente, per chiusura.

 

Segniamo i PUNTI APERTO e CHIUSO sul grafico?

Domanda ai professionisti - esiste un tale indicatore o script,

che disegna i punti di apertura e di chiusura sul grafico?

di un ordine? Li collega con una linea,

Quello rosso è una perdita. Utile per analizzare gli errori sulla storia!

 

Credo che questa domanda le sia già stata posta.

Puoi trascinare un trade direttamente dalla cronologia del conto al relativo grafico con il tuo mouse.

E otterrete quello che state cercando.

Ho visto la sceneggiatura da qualche parte. Credo che I.Kim avesse un simile copione.

http://www.kimiv.ru/index.php?option=com_remository&Itemid=13&func=fileinfo&id=32

 

Chiedere aiuto agli intenditori sul Cursore con un prezzo,

Grazie!

 

Per favore, aiutatemi a capire perché i miei ordini aperti non si chiudono quando il trend cambia (condizioni aperte). E come posso risolvere questo errore!

Il codice è così per me:

extern int TP=40;            //уровень Take Profit
extern int SL=0;              //уровень Stop Loss
extern double Lots1=0.2;      //лот основной сделки
extern double Lots2=0.1;      //лот вспомогательных сделок 
extern int slippage=2;        //проскальзование
int MagicNumber1=5345; //магическое число сделки BUY
int MagicNumber2=1612; //магическое число сделки SELL
// переменная для пятизнаков
int BrokerDecimal = 1;
// и просто нужные переменные (типа флажки)
double ticketbuy;
double ticketsell;



int init()
  {
  // Если брокер дает котировки по валюте с точностью в пять или три знака - пипс будет меньше стандартного в 10 раз - вводим множитель   
  if(Digits==3 || Digits==5) BrokerDecimal=10; 
  // Перемножить все уровни в пипсах на множитель
  SL           = SL * BrokerDecimal; 
  TP           = TP * BrokerDecimal;
  return(0);
  }

int start()
  {
  // Рассчеты и анализ индикаторов
  double jaw=iAlligator(NULL,0,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN, MODE_GATORJAW,1); //синяя линия (челюсть)
  double teen=iAlligator(NULL,0,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN, MODE_GATORTEETH,1);//красная линия (зубы)
  double lips=iAlligator(NULL,0,13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN, MODE_GATORLIPS,1);//зеленая линия (губы)
  
  double lastClose=iClose(NULL,0,1);
  
  
  // Собственно тело программы  
  if((OrderSelect( ticketbuy, SELECT_BY_TICKET, MODE_TRADES) == false || OrderCloseTime() > 0 )
    && lips> jaw && lastClose> lips) // условие выставления ордеров БАЙ
    SEND_BUY(); // вынесем "модуль" выставления ордера бай - добавить внизу
  
  if((OrderSelect( ticketsell, SELECT_BY_TICKET, MODE_TRADES) == false || OrderCloseTime() > 0 )
    && jaw> lips && lastClose< jaw) // условие выставления ордеров СЕЛЛ
    SEND_SELL(); // вынесем "модуль" выставления ордера сэлл - добавить внизу
  
  if (OrdersTotal()>=1)
      {
        if(OrderSelect(0, SELECT_BY_POS, MODE_TRADES))
          {
            if(OrderType()==OP_BUY)
              {
                if(( lips== jaw || lips== teen) && lastClose== lips) // условия закрытия сделки БАЙ
                  while(OrdersTotal()>0)
                    {
                      CloseDirect(0,"Принудительное закрытие сделки при обратном движении рынка, ticket=");
                    }
              }
            if(OrderType()==OP_SELL)
              {
                if(( jaw== lips || jaw== teen) && lastClose== jaw) // условия закрытия сделки СЕЛЛ
                  while(OrdersTotal()>0)
                    {
                      CloseDirect(0,"Принудительное закрытие сделки при обратном движении рынка, ticket=");
                    }
              }
          }
        else
          {
            Print("ОШИБКА в Start()(блок закрытия при обратном движении) :OrderSelect() - ",GetLastError());
            return(-1);
          }
      }
         
  return(0);
  }

// "модуль" выставления ордера бай
void SEND_BUY()
  {
  double sl_buy;
  if(! SL)
  { 
  sl_buy=0;
  }
    else
    {
    sl_buy=Ask- SL*Point;
    }
    ticketbuy=OrderSend(Symbol(),OP_BUY, Lots1,Ask, slippage, sl_buy,Ask+ TP*Point,"take_trend", MagicNumber1,0,Blue);
          if( ticketbuy == -1)
          {
          Alert(Symbol(),"ошибка:бай", GetLastError());
          return(-1);
          }
            if( ticketbuy > 1)
            Alert (Symbol(),"бай - ок !");
  }

// "модуль" выставления ордера сэлл
void SEND_SELL()
  {
  double sl_sell;
  if(! SL)
  { 
  sl_sell=0;
  }
   else
   {
   sl_sell=Bid+ SL*Point;
   }
   ticketsell=OrderSend(Symbol(),OP_SELL, Lots1,Bid, slippage, sl_sell,Bid- TP*Point,"take_trend", MagicNumber2,0,Red);
         if( ticketsell == -1)
         {
         Alert(Symbol(),"ошибка:сэлл", GetLastError());
         return(-1);
         }
           if( ticketsell > 1)
           Alert (Symbol(),"сэлл - ок !");
   }

// МОДУЛЬ ЗАКРЫТИЯ СДЕЛОК ПРИ СМЕНЕ ТРЕНДА 
void CloseDirect(int cntr, string comm)
  {
    double closeprice;
    if(OrderSelect( cntr, SELECT_BY_POS, MODE_TRADES))
      {
        RefreshRates();
        if (OrderType()==OP_BUY)
          closeprice=Bid;
        else
          closeprice=Ask;
        if (OrderClose(OrderTicket(),OrderLots(), closeprice,10,Green))
        {
          Print( comm, OrderTicket());
        }
        else
          {
            Print("ОШИБКА в CloseDirect():OrderClose() - ",GetLastError());
          }
      }
    else
      {
        Print("ОШИБКА в CloseDirect():OrderSelect() - ",GetLastError());
      }
  }
 

Potete dirmi per favore come ottenere un segnale da un rsi lisciato? (MA => RSI).

Motivazione: