Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 313

 
 
Burger:
Ho bisogno di una critica sulla linea di assistenza EA https://docs.google.com/document/d/1Bkqu7NzSj8mrNsa5iO8lB6UmKNCJ4YiaY-wKXzbF3Wo/pub


Mi piace criticare, ma c'è un sacco di - un po' di giro del primo paragrafo

L'archivio non si fissa bene (( Ora lo caricherò su un sito di condivisione di file.

 
VladislavVG:

Se questo sempre il più vicino allora può essere abbastanza semplice e i maghi non sono ovviamente necessari. Ma non abbiamo sentito nulla di questo da PGM5, e nel caso generale potrebbe non essere l' ordine più vicino ma un ordine più lontano dal prezzo corrente e in mezzo gli ordini possono essere piazzati per altre ragioni: non sappiamo nulla dell'algoritmo di decisione. Stavamo parlando solo di ordini correlati.
Per qualche ragione ho in mente che il più vicino dovrebbe essere rimosso. Gli altri sono tutti più lontani e aperti in condizioni diverse. E poiché l'ordine pendente più vicino è opposto a quello del mercato, abbiamo tutti i dati per trovarlo correttamente.
 
PGM5:
Grazie per il vostro sostegno. Potete dirmi dove cercare la risposta a questa domanda. Sì, un'altra cosa: gli ordini dovrebbero essere impostati quando l'ordine viene attivato e quando il takeprofit viene attivato e il più vicino dovrebbe essere cancellato prima. Grazie in anticipo.

State già iniziando a scrivere il TOR. Avete almeno iniziato a fare qualcosa? O stai aspettando il pesce? In questo thread si aiutano coloro che vogliono imparare a programmare in mql4 gratuitamente, non coloro che vogliono ottenere una soluzione pronta gratuita.
 
43
alexey1979621 29.11.2013 11:52 #

Saluti a tutti! Sto chiedendo aiuto per risolvere un problema interessante. C'è un EA, la cui caratteristica è che dopo aver ottenuto un profitto i prossimi trade da 1 a 4 sono chiusi in stop loss, poi di nuovo in profitto. L'Expert Advisor apre i trade in base al segnale dell'indicatore. Per escludere i trade redditizi che seguono dopo il profitto, si dovrebbero saltare i segnali generati dall'indicatore, cioè non chiudere le operazioni (1,2,3,4) dopo aver ottenuto un profitto. La funzione Sig è disponibile per questo scopo. Tuttavia, penso di aver scritto male questa funzione poiché l'EA non apre affatto ordini con essa e tutto funziona molto bene senza di essa. Forse c'è anche un errore nella condizione. In generale, .... Non so cosa diavolo sia, sono due settimane che non riesco a risolvere questo blocco. Potreste consigliarmi, persone intelligenti, dov'è l'errore?

Sì, signal è il numero di segnali dopo un profitto e pynkt è la dimensione del profitto in pip.

Sarei grato per qualsiasi aiuto.

void CheckForOpen()
{
   int ticket, STOPLEVEL;
   double Price, SL, TP; 
   STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);


   double MA1Low = NormalizeDouble (iMA(NULL,0,MA_Period_2,MA_Shift_2,MA_Method_2,0,1), Digits); 
   double MA2High = NormalizeDouble (iMA(NULL,0,MA_Period_2,MA_Shift_2,MA_Method_2,1,1), Digits);
   
 
  
   if(Volume[0]>1) return;

    // продажа
   if (Open[1]>Close[1] && Open[1] > MA1Low && Close[1] < MA1Low)
   
{
      if(Pro(1,100))

   {
       ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL,TP,"Pattern_1",1000,0,Red);
      return;
    }
   
  }  
//---- buy conditions
   // покупка
  if (Open[1]<Close[1] && Open[1] < MA2High && Close[1] > MA2High)
 
 { 
   if(Pro(1,100))
   {
      ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,SL,TP,"Pattern_1",1000,0,Blue);
      return;
   }       
   }
}
 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool Sig(int signal,int pynkt)
 {
  static int cnt = 0;
  static datetime tm;
  if(Time[0] == tm) return(false);
  tm = Time[0];
  if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY) == true)
   {
    cnt = cnt + 1;
    if(OrderType() == OP_BUY && OrderClosePrice() - OrderOpenPrice() < pynkt*Point) cnt = 0;
    if(OrderType() == OP_SELL && OrderOpenPrice() - OrderClosePrice() < pynkt*Point) cnt = 0;
    if(cnt >= signal) return(true);
   }
  return(false);
 }
//+------------------------------------------------------------------+
 
artmedia70:
Stai già iniziando a scrivere i ToR. Hai almeno iniziato a fare qualcosa da solo? O stai aspettando il pesce? In questo thread si aiutano coloro che vogliono imparare a programmare in mql4 gratuitamente, non coloro che vogliono ottenere una soluzione pronta gratuita.



Salve. Sono un principiante nella programmazione. Ho usato solo il forum e un tutorial per imparare. All'inizio ho capito tutto, ma quando sono arrivato alle funzioni generali, ho cominciato a fraintendere qualcosa, tra l'altro, durante la corrispondenza, avevo imparato qualcosa... Ho preso lo script da lì, lo script da lì e ho sottolineato alcune cose dal forum. L'ho provato sulla demo - mostra profitto ma gli script sono semplici: gli ordini non sono sempre piazzati e un ordine mancato causa il fallimento del sistema. L'ho provato sul conto reale: tutti gli ordini vengono piazzati (ma questa volta non ci sono stati gap), porta profitto, ma vengono aperte molte posizioni inutili. Ho capito che semplici script e funzioni non possono risolvere questo problema e ho chiesto aiuto. L'Expert Advisor è redditizio, ma a volte devo "aiutare" con le mani. Sto pensando di automatizzare questo "aiuto" nel tempo.
 
consigliere filehttp://drive.google.com/file/d/0B0Zxi_UuVVTZejc3Tmg1Zk5ablU/edit?usp=sharing
 
alexey1979621:
43
alexey1979621 29.11.2013 11:52 #

Saluti a tutti! Sto chiedendo aiuto per risolvere un problema interessante. C'è un EA, la cui caratteristica è che dopo aver ottenuto un profitto i prossimi trade da 1 a 4 vengono chiusi in stop loss, poi di nuovo in profitto. L'Expert Advisor apre i trade in base al segnale dell'indicatore. Per escludere i trade redditizi che seguono dopo il profitto, si dovrebbero saltare i segnali generati dall'indicatore, cioè non chiudere le operazioni (1,2,3,4) dopo aver ottenuto un profitto. La funzione Sig è disponibile per questo scopo. Tuttavia, penso di aver scritto male questa funzione poiché l'EA non apre affatto ordini con essa e tutto funziona molto bene senza di essa. Forse c'è anche un errore nella condizione. In generale, .... Non so cosa diavolo sia, sono due settimane che non riesco a risolvere questo blocco. Potreste consigliarmi, persone intelligenti, dov'è l'errore?

Sì, signal è il numero di segnali dopo un profitto e pynkt è la dimensione del profitto in pip.

Sarei grato per qualsiasi aiuto.


La funzione Sig() proibisce l'apertura di compravendite se non c'è storia degli ordini (restituisce false)
 
Vinin:

La funzione Sig() proibisce l'apertura di compravendite se non c'è storia degli ordini (restituisce false)
Ho dato per scontato che la storia nel tester sia simulata (quindi mi sbagliavo). Sembra che dovremmo eseguire una funzione di ricerca dell'ultimo ordine tramite un simul, un cursore e scartare gli ordini in sospeso. Il mio cervello lo capisce (se sto pensando nella giusta direzione), ma non posso usare le mie mani per eseguire il codice. Puoi darmi un suggerimento? Grazie per l'aiuto.
 
alexey1979621:
Ho dato per scontato che la storia nel tester sia simulata (quindi mi sbagliavo). Si scopre che è necessario fare una funzione per cercare l'ultimo ordine, per simul, medj, e scartare quelli in sospeso. Il mio cervello lo capisce (se sto pensando nella giusta direzione), ma non posso usare le mie mani per eseguire il codice. Puoi darmi un suggerimento? Grazie per il vostro aiuto.
Tutti i vostri consigli!
Documentazione Tutorial

E funzioni:

GetIndexLastPos - Restituisce l'indice dell'ultima posizione aperta o -1
GetLotLastPos - Restituisce la dimensione del lotto dell'ultima posizione aperta o -1

E molti altri molto utili!

Motivazione: