Domanda per gli intenditori - pagina 15

 
rid >> :

Ecco come si fa:

Così avete StopLoss == TakeProfit e non c'è questa opzione nelle condizioni di confronto ((

 
Credo che si debba contare da Ask. Vendi a Bid, chiudi a Ask.
 

Sì, - può benissimo essere che Ask debba essere chiuso. Ci proverò.

Cioè per vendere il takeprofit può essere anche da Bid.

E stop loss - dovrebbe essere rigorosamente da Ask, probabilmente... stop leveller dovrebbe essere contato

 

Buon pomeriggio a tutti.

Ecco una domanda.

Per qualche ragione l'Expert Advisor (Pips, Grider) sul conto reale ha l'abitudine di smettere improvvisamente di funzionare senza una ragione apparente! (DC Broko).

A volte succede dopo il downtime del server (succede spesso), e dopo la ripresa delle quotazioni l'Expert Advisor (o MT4) deve essere riavviato e solo allora comincia a funzionare.

A volte l'EA si ferma, di nuovo, senza una ragione apparente e devi riavviare mt4 o reinstallare l'EA per "spingerlo".

Gli ordini vengono effettuati correttamente. Non voglio dover fare una domanda sul forum.

Non ci sono errori nel LogFile. Chi ha avuto problemi con questo, per favore consigli?

Non voglio porre una domanda al supporto tecnico sul forum per non attirare l'attenzione sul mio account.

 
Come semplificare il modello dall'articolo "Affidarsi al potere dei modelli" rimuovendo SL, TP, ordini pendenti e la loro modifica. Altrimenti è impossibile sperimentare.
 
shap писал(а) >>
Come semplificare il modello dall'articolo "Affidarsi al potere dei modelli" rimuovendo SL, TP, ordini pendenti e la loro modifica. Altrimenti è impossibile sperimentare.

Questo è il quarto post con lo stesso contenuto. >> Non va bene.

 

Buona sera. Domanda sull'indicatore.

Sto impostando la ventola di Gann da basso ad alto e da basso a basso nell'indicatore.

Ma per qualche motivo le linee del ventilatore non sono dirette nel modo che voglio - sono disegnate a caso!

Per esempio, come questo (qui la ventola si è spostata verso l'alto dal massimo di 1,4071 per qualche motivo):

Non so perché è così.

Ho impostato le barre nella funzione STRAT in questo modo:

//задаем текущие значения ввера Ганна от минимума вверх
// и вычисляем масштаб веера
        ObjectMove( "GANNFAN_" ,0,Time[ xLOW], LOW);
        Масштаб_Веера_= MathAbs (MathSqrt(( LOW)*10000) ) ;

//задаем текущие значения ввера Ганна от максимума вниз
// и вычисляем масштаб веера
        ObjectMove( "GANNFAN" ,0,Time[ xHIGH], HIGH);
        Масштаб_Веера= (-1)* MathAbs(MathSqrt(( HIGH)*10000)  );

Per favore, ditemi perché e dov'è l'errore?

 

Ecco tutto il codice dell'indicatore;

#property indicator_chart_window
//-------------------------------------------------------------------+
extern string     _  = "---- ОБЩИЕ ПАРАМЕТРЫ -----" ; 
extern int       Bars_=200;//кол-во баров для расчета формулы
extern int       TimeFr=0;//задаем тф для расчета
extern color     Цвет_Веера = DarkViolet;     
//--------------------------------------------------------------
int     xLOW, xHIGH;
double   HIGH, LOW ;
 double       Масштаб_Веера ;
 double       Масштаб_Веера_ ;
//+------------------------------------------------------------------+
int init()
  { 
//обьявляем веер Ганна от мин вверх  
ObjectCreate("GANNFAN_",OBJ_GANNFAN,0,0,0,0,0); 
//задаем флаг фонового отображения веера 
 ObjectSet("GANNFAN_", OBJPROP_BACK,1);
 //задаем цвет веера 
ObjectSet("GANNFAN_", OBJPROP_COLOR, Цвет_Веера);
//задаем толщину линий веера Ганна
ObjectSet("GANNFAN_", OBJPROP_WIDTH,2); 
 //задаем масштаб веера Ганна   
ObjectSet("GANNFAN_", OBJPROP_SCALE, Масштаб_Веера_); 

//обьявляем веер Ганна  от макс вниз 
ObjectCreate("GANNFAN",OBJ_GANNFAN,0,0,0,0,0); 
//задаем флаг фонового отображения веера 
 ObjectSet("GANNFAN", OBJPROP_BACK,1);
 //задаем цвет веера 
ObjectSet("GANNFAN", OBJPROP_COLOR, Цвет_Веера);
//задаем толщину линий веера Ганна
ObjectSet("GANNFAN", OBJPROP_WIDTH,2); 
 //задаем масштаб веера Ганна   
ObjectSet("GANNFAN", OBJPROP_SCALE, Масштаб_Веера);  
 
//задаем вертикальные линии от экстремумов 
ObjectCreate("line",OBJ_VLINE,0,0,0,0,0);//вертикальная линия от макс
ObjectSet("line", OBJPROP_BACK,1);
ObjectSet("line", OBJPROP_COLOR,Red);//цвет
ObjectSet("line", OBJPROP_WIDTH,2); //толщина линии
ObjectCreate("line_",OBJ_VLINE,0,0,0,0,0);//вертикальная линия от мин
ObjectSet("line_", OBJPROP_BACK,1);
ObjectSet("line_", OBJPROP_COLOR,Orange);//цвет
ObjectSet("line_", OBJPROP_WIDTH,2);//толщина линии 
  }//------конец функции ИНИТ

//+------------------------------------------------------------------+
int deinit() {
ObjectDelete("GANNFAN_");
ObjectDelete("GANNFAN");
ObjectDelete("line");
ObjectDelete("line_");
//if (!IsTesting()) ObjectsDeleteAll(0,OBJ_TREND);  
               }

//+------------------------------------------------------------------+

int start()
  { 
 xHIGH =  iHighest( NULL, TimeFr, MODE_HIGH, Bars_ ,1); //номер бара максимума
 HIGH =  iHigh ( NULL, TimeFr, xHIGH) ;        // ценовое значение максимума
 xLOW  =  iLowest( NULL, TimeFr, MODE_LOW, Bars_ ,1);   //номер бара минимума
 LOW  =  iLow( NULL, TimeFr, xLOW) ;            // ценовое значение минимума
//задаем текущие горизонтальные лимнии на мин и макс
//ObjectMove( "lowline" ,0,Time[ xLOW] , LOW); 
//ObjectMove("highline",0,Time[ xHIGH], HIGH); 
        
 //задаем текущие значения ввера Ганна от
// минимума и вычисляем масштаб веера
   ObjectMove( "GANNFAN_" ,0,Time[ xLOW], LOW);
   Масштаб_Веера_= MathAbs (MathSqrt(( LOW)*10000) ) ;
        
//задаем значения для отрисовки вертик линии на минимуме
   ObjectMove( "line_" ,0,Time[ xLOW],0); 
        
          
//задаем текущие значения ввера Ганна от 
//максимума вниз и вычисляем масштаб веера
   ObjectMove( "GANNFAN" ,0,Time[ xHIGH], HIGH);
   Масштаб_Веера= (-1)* MathAbs(MathSqrt(( HIGH)*10000)  );
        
 //задаем значения для отрисовки вертик линии на максимуме
 ObjectMove( "line" ,0,Time[ xHIGH],0); 


   return(0);
  }//конец функции СТАРТ
 

Ciao, questo è solo il mio secondo post, cioè, un nuovo arrivato nel forum, iniziato a imparare la lingua, naturalmente, le domande abbondano, ed è un po 'difficile da imparare dai libri. Ho iniziato con un libro di testo, un rispettato membro del forum Sergei Kovalev, e alcuni degli articoli di questo forum studiato ... Dopo molta teoria, ha iniziato la pratica, ha creato un modello e uno schema del primo esperto, diviso in blocchi, e ora una funzione dopo l'altra analizzare (accuratamente) per capire come funziona, credetemi se si sub piuttosto che un programmatore, non è facile per rompere tutto nella mia testa, e per comprendere cosa a cosa. Quindi ecco la cosa, qualcuno può suggerire che per me Professionisti finora, il vero problema: Oggi mi sono seduto tutto il giorno e sono stato in grado di risolvere il problema.

Sto eseguendo alcune funzioni come script per controllare se compilano e quali non funzionano o meno nel terminale. Preso oggi la funzione di pre-calcolo delle barre nella finestra:

//+------------------------------------------------------------------+

int start()
  {
      int A = 100;
//+------------------------------------------------------------------+  
      if(Bars < A)             // Недостаточно баров
      {      
      Alert("Недостаточно баров в окне инструмента.");
      return;                  // Выход из start()
      }


  return(0);
  }
//+------------------------------------------------------------------+  

Naturalmente esce il messaggio *Non ci sono abbastanza barre*, ma su un nuovo tick capisco che questo messaggio apparirà di nuovo a tempo indeterminato.

Ora aggiungo una variabile e aggiungo una dichiarazione if, e in un futuro blocco di errore Bloc_Error, metto una dichiarazione switch e ottengo questo:

int start()
  {
      int A = 100;
      bool Work=true;   
//+------------------------------------------------------------------+      
      int Bloc_Error    // Пользовательская функция
//+------------------------------------------------------------------+      
    switch()           // Преодолимые ошибки:
      {
      case 3:          // Неверные параметры:
      Work=false;
      return(0);
      }

//+------------------------------------------------------------------+ 

      if(Bars < A)   // Недостаточно баров
      {      
      Alert("Недостаточно баров в окне инструмента.");
      return;                  // Выход из start()
      }
      if( Work==false)          // Ошибка   
      {      
      Alert("Эксперт не работает.");     
      return;                  // Выход из start   
      }
//+------------------------------------------------------------------+   
  return(0);
   }
La domanda è cosa ho fatto di sbagliato qui nella dichiarazione dello switch, perché il messaggio *Expert not working* non sta spuntando, e perché l'EA smetta effettivamente di funzionare?????
 

"divide et impera"... - non mischiare punti non esaminati... il punto di errore dovrebbe essere più facile da identificare...

https://docs.mql4.com/ru/basis/operators/switch - tutto si vede subito. finché il disegno non è fissato nella tua testa - usa il modello classico. confrontalo attentamente - troverai subito gli errori.

Impara ad usare il motore di ricerca.

Dopo aver letto la documentazione "sull'argomento", trovare i testi con i codici e vedere come si applicano...