Aiuto per la codifica - pagina 657

 

Cari amici,

Questo ea funziona su diverse coppie in un certo periodo?

Per esempio: in un certo periodo lavora su EURUSD + GBPUSD ecc.

Grazie...

File:
 
oguz:

Cari amici,

Questo ea funziona su diverse coppie in un certo periodo?

Per esempio: in un certo periodo di tempo lavora su EURUSD + GBPUSD ecc.

Grazie...

Attaccalo a diversi grafici con diversi numeri magici e dovrebbe funzionare bene. Altrimenti, a giudicare dal codice, si può avere una grande confusione
 
mladen:
Attaccalo a diversi grafici con diversi numeri magici e dovrebbe funzionare bene. Altrimenti, a giudicare dal codice, si può avere una grande confusione

Grazie mille per le informazioni dettagliate.

A proposito, possiamo allegare qualsiasi numero come numero magico?

Il suo numero magico predefinito è: "288".

Posso allegare: 398, 477, 501, 875 ecc. ?

 

Caro Mladen,

Posso sapere come posso aggiungere il segnale opposto vicino al codice?

extern bool oppositeSignalclose=true;


Ho provato, ma si chiude su ogni barra.


Puoi aiutarmi a vedere cosa dovrei cambiare per l'"OrderSended", chiudere tutte le vendite dopo l'acquisto / chiudere tutte le compravendite dopo la vendita.

Grazie.

  // New buy orders
  TotalBuyOrders = CountOfOrders(MagicNumberBuy);
  if(TotalBuyOrders > 0 && TotalBuyOrders < MaxTrades)
  {
    OrderSended = -1;
    LastSellPrice = FindLastOrderParameter(MagicNumberBuy, "price");

    if(LastSellPrice - Ask >= GetPipstepForStep(TotalBuyOrders + 1) * vPoint)
    {
      BLot   = GetLotForStep(MagicNumberBuy, TotalBuyOrders);
      BComment = StringSubstr(LastOrderComment, 0, StringFind(LastOrderComment, "|", 0)) + "|";
      OrderSended = SendMarketOrder(OP_BUY, BLot, 0, 0, MagicNumberBuy, BComment);
    }
  }
  // New sell orders
  TotalSellOrders = CountOfOrders(MagicNumberSell);
  if(TotalSellOrders > 0 && TotalSellOrders < MaxTrades)
  {
    OrderSended = -1;
    LastBuyPrice = FindLastOrderParameter(MagicNumberSell, "price");

    if (Bid - LastBuyPrice >= GetPipstepForStep(TotalSellOrders + 1) * vPoint) 
    {
      SLot   = GetLotForStep(MagicNumberSell, TotalSellOrders);
      SComment = StringSubstr(LastOrderComment, 0, StringFind(LastOrderComment, "|", 0)) + "|";
      OrderSended = SendMarketOrder(OP_SELL, SLot, 0, 0, MagicNumberSell, SComment);
    }
  }
 
stevenpun:

Caro Mladen,

Posso sapere come posso aggiungere il segnale opposto vicino al codice?


Ho provato, ma si chiude su ogni barra.


Puoi aiutarmi a vedere cosa dovrei cambiare per l'"OrderSended", chiudere tutte le vendite dopo l'acquisto / chiudere tutte le compravendite dopo la vendita.

Grazie.

Invertire la chiamata a CountOfOrders se oppositeSignalclose è impostato su true (cioè, qualcosa del genere:

if (oppositeSignalclose)
      TotalBuyOrders = CountOfOrders(MagicNumberBuy);
else  TotalBuyOrders = CountOfOrders(MagicNumberSell);
E fare lo stesso anche per gli ordini di vendita
 
mladen:

Invertire la chiamata a CountOfOrders se oppositeSignalclose è impostato su true (cioè, qualcosa come questo:

E fai lo stesso anche per gli ordini di vendita

Si tratta di un trade inverso?

Voglio che il trade corrente si chiuda quando il segnale è opposto.

Ho trovato uno dei codici in rete, ma si chiude su ogni barra.

Potete aiutarmi a controllare se ho inserito il modo corretto o cose diverse che voglio.

E per quanto riguarda il trailing stop a candela, ho fatto quello che mi hai insegnato la settimana scorsa ma ancora non funziona.

extern bool oppositeclose=true;
if((oppositeclose && sell))closebuy();
if((oppositeclose && buy))closesell();
//|---------close

void closebuy(){
   RefreshRates();
   if(OrdersTotal()>0){
      for(int i=OrdersTotal();i>=0;i--){
         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic && OrderType()==OP_BUY){
            OrderClose(OrderTicket(),OrderLots(),Bid,slippage*mt);
         }
      }
   }
}

void closesell(){
   RefreshRates();
   if(OrdersTotal()>0){
      for(int i=OrdersTotal();i>=0;i--){
         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic && OrderType()==OP_SELL){
            OrderClose(OrderTicket(),OrderLots(),Ask,slippage*mt);
         }
      }
   }
}
File:
BbandTest.mq4  37 kb
 
stevenpun:

Si tratta di un commercio inverso?

Voglio che il trade corrente si chiuda al segnale opposto.

Ho trovato uno dei codici in rete, ma si chiude su ogni barra.

Potete aiutarmi a controllare se ho inserito il modo corretto o altre cose che voglio.

E il trailing stop a candela, ho fatto quello che mi hai insegnato la settimana scorsa ma ancora non funziona.

Per quanto vedo, questo dovrebbe essere corretto
 

Per favore aiutatemi con il codice degli indicatori di esportazione in .csv
Permette di scrivere solo un indicatore...

Cosa dovrebbe essere corretto per esportare più colonne di dati dopo OHLC ...?

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

//|                                                  RSI_to_File.mq4 |

//|                      Copyright © 2007, MetaQuotes Software Corp. |

//|                                        [url]http://www.metaquotes.ru/[/url] |

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

#property copyright "Copyright © 2007, MetaQuotes Software Corp."

#property link      "http://www.metaquotes.ru/"


#property show_inputs

string SymbolsArray[13]={"","GBPUSD","EURUSD"};


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

//| string SymbolByNumber                                   |

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

string GetSymbolString(int Number)

  {

//----

   string res="";

   res=SymbolsArray[Number];   

//----

   return(res);

  }


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

//| возвращает период                                                |

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

int PeriodNumber(int number)

   {

   int per_min;

   switch (number)

      {

      default: per_min=PERIOD_M1;break;

      case 1: per_min=PERIOD_M5;break;

      case 2: per_min=PERIOD_M12;break;

      }

   return(per_min);   

   }


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

//|   выводит в файл котировки + значения индикатора                 |

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

void IFT_output(string SymbolName,int PeriodMinutes)

   {

   int size=iBars(SymbolName,PeriodMinutes);

//----

   if (size==0) return;

   int handle=FileOpen(SymbolName+PeriodMinutes+"_IFT.csv",FILE_WRITE|FILE_CSV);

   if (handle<0) return;

   FileWrite(handle,"Time seconds;Time;Open;Low;High;Close;Volume;IFT");

   for (int i=size-1;i>=0;i--)

      {

      FileWrite(handle,iTime(SymbolName,PeriodMinutes,i),TimeToStr(iTime(SymbolName,PeriodMinutes,i))

         ,iOpen(SymbolName,PeriodMinutes,i),iLow(SymbolName,PeriodMinutes,i),iHigh(SymbolName,PeriodMinutes,i)

         ,iClose(SymbolName,PeriodMinutes,i),iVolume(SymbolName,PeriodMinutes,i),iCustom(SymbolName,PeriodMinutes,"IFT",0,i));

      }

   FileClose(handle);      

//----

   return;

   }

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

//| script program start function                                    |

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

int start()

  {

  int SymbolCounter,PeriodCounter; 

//----

   for (SymbolCounter=1;SymbolCounter<13;SymbolCounter++)

      {

      for (PeriodCounter=2;PeriodCounter<=6;PeriodCounter++)

         {

         //Print("NewBar on ",GetSymbolString(SymbolCounter),PeriodNumber(PeriodCounter),"M");

         IFT_output(GetSymbolString(SymbolCounter),PeriodNumber(PeriodCounter));

         }

      }

   

//----

   return(0);

  }

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

 
kostumer27:

Per favore aiutatemi con il codice degli indicatori di esportazione in .csv
Permette di scrivere solo un indicatore...

Cosa dovrebbe essere corretto per esportare più colonne di dati dopo OHLC ...?

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

//|                                                  RSI_to_File.mq4 |

//|                      Copyright © 2007, MetaQuotes Software Corp. |

//|                                        [url]http://www.metaquotes.ru/[/url] |

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

#property copyright "Copyright © 2007, MetaQuotes Software Corp."

#property link      "http://www.metaquotes.ru/"


#property show_inputs

string SymbolsArray[13]={"","GBPUSD","EURUSD"};


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

//| string SymbolByNumber                                   |

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

string GetSymbolString(int Number)

  {

//----

   string res="";

   res=SymbolsArray[Number];   

//----

   return(res);

  }


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

//| возвращает период                                                |

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

int PeriodNumber(int number)

   {

   int per_min;

   switch (number)

      {

      default: per_min=PERIOD_M1;break;

      case 1: per_min=PERIOD_M5;break;

      case 2: per_min=PERIOD_M12;break;

      }

   return(per_min);   

   }


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

//|   выводит в файл котировки + значения индикатора                 |

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

void IFT_output(string SymbolName,int PeriodMinutes)

   {

   int size=iBars(SymbolName,PeriodMinutes);

//----

   if (size==0) return;

   int handle=FileOpen(SymbolName+PeriodMinutes+"_IFT.csv",FILE_WRITE|FILE_CSV);

   if (handle<0) return;

   FileWrite(handle,"Time seconds;Time;Open;Low;High;Close;Volume;IFT");

   for (int i=size-1;i>=0;i--)

      {

      FileWrite(handle,iTime(SymbolName,PeriodMinutes,i),TimeToStr(iTime(SymbolName,PeriodMinutes,i))

         ,iOpen(SymbolName,PeriodMinutes,i),iLow(SymbolName,PeriodMinutes,i),iHigh(SymbolName,PeriodMinutes,i)

         ,iClose(SymbolName,PeriodMinutes,i),iVolume(SymbolName,PeriodMinutes,i),iCustom(SymbolName,PeriodMinutes,"IFT",0,i));

      }

   FileClose(handle);      

//----

   return;

   }

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

//| script program start function                                    |

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

int start()

  {

  int SymbolCounter,PeriodCounter; 

//----

   for (SymbolCounter=1;SymbolCounter<13;SymbolCounter++)

      {

      for (PeriodCounter=2;PeriodCounter<=6;PeriodCounter++)

         {

         //Print("NewBar on ",GetSymbolString(SymbolCounter),PeriodNumber(PeriodCounter),"M");

         IFT_output(GetSymbolString(SymbolCounter),PeriodNumber(PeriodCounter));

         }

      }

   

//----

   return(0);

  }

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

Basta aggiungere i dati che vuoi esportare nei parametri della funzione FileWrite()
 
mladen:
Per quanto vedo, questo dovrebbe essere corretto

Ho risolto la funzione di chiusura opposta :>

Ma quando sei libero puoi aiutare a controllare il trailing stop della candela, non riesco ancora a risolverlo :(