Aide au codage - page 657

 

Chers amis,

Est-ce que cette ea fonctionne sur différentes paires à un moment donné ?

Par exemple : à un moment donné, EURUSD + GBPUSD, etc.

Merci...

Dossiers :
 
oguz:

Chers amis,

Est-ce que cette ea fonctionne sur différentes paires à un moment donné ?

Par exemple : à un moment donné, EURUSD + GBPUSD, etc.

Merci...

Attachez-le à différents graphiques avec différents nombres magiques et il devrait fonctionner correctement. Sinon, à en juger par le code, vous pouvez avoir une confusion majeure...
 
mladen:
Attachez-le à différents graphiques avec différents numéros magiques et cela devrait fonctionner correctement. Sinon, à en juger par le code, vous pouvez avoir une confusion majeure.

Merci pour ces informations très détaillées.

A propos, pouvons-nous attacher n'importe quel nombre comme nombre magique ?

Le nombre magique par défaut est : "288".

Puis-je le joindre : 398, 477, 501, 875 etc. ?

 

Cher Mladen ,

Puis-je savoir comment ajouter la fermeture du signal opposé dans le code ?

extern bool oppositeSignalclose=true;


J'ai essayé mais il ferme sur chaque barre.


Pouvez-vous m'aider à voir ce que je dois changer pour le "OrderSended" fermer toutes les ventes après l'achat / fermer tous les achats après la vente.

Je vous remercie.

  // 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:

Cher Mladen ,

Puis-je savoir comment ajouter la fermeture du signal opposé dans le code ?


J'ai essayé mais il ferme sur chaque barre.


Pouvez-vous m'aider à voir ce que je dois changer pour le "OrderSended" fermer toutes les ventes après l'achat / fermer tous les achats après la vente.

Je vous remercie.

Inversez l'appel à CountOfOrders si l'oppositeSignalclose est défini à true (c'est-à-dire quelque chose comme ceci :

if (oppositeSignalclose)
      TotalBuyOrders = CountOfOrders(MagicNumberBuy);
else  TotalBuyOrders = CountOfOrders(MagicNumberSell);
Et faire la même chose pour les ordres de vente aussi
 
mladen:

Inverser l'appel à CountOfOrders si l'oppositeSignalclose vaut true (c'est-à-dire quelque chose comme ceci :

Et faire la même chose pour les ordres de vente aussi

S'agit-il d'une transaction inversée ?

Je veux que la transaction en cours soit clôturée lorsque le signal est opposé.

J'ai trouvé un code sur le net, mais il se ferme sur chaque barre.

Pouvez-vous m'aider à vérifier si j'ai inséré le bon code ou si j'ai inséré des choses différentes de celles que je voulais.

J'ai fait ce que vous m'avez enseigné la semaine dernière, mais cela ne fonctionne toujours pas.

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);
         }
      }
   }
}
Dossiers :
BbandTest.mq4  37 kb
 
stevenpun:

S'agit-il d'une transaction inversée ?

Je veux que le trade actuel soit fermé lorsque le signal est opposé.

J'ai trouvé un code sur le net, mais il se ferme sur chaque barre.

Pouvez-vous m'aider à vérifier si j'ai inséré la bonne méthode ou des choses différentes de ce que je veux.

Et la bougie trailing stop, j'ai fait ce que vous m'avez enseigné la semaine dernière mais cela ne fonctionne toujours pas.

D'après ce que je vois, cela devrait être correct.
 

S'il vous plaît, aidez-moi avec le code d'exportation des indicateurs vers .csv
Il permet d'écrire un seul indicateur...

Qu'est-ce qu'il faut corriger pour exporter plusieurs colonnes de données après 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:

S'il vous plaît, aidez-moi avec le code d'exportation des indicateurs vers .csv.
Il permet d'écrire un seul indicateur...

Qu'est-ce qui doit être corrigé pour exporter plusieurs colonnes de données après 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);

  }

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

Il suffit d'ajouter les données que vous voulez exporter dans les paramètres de la fonction FileWrite().
 
mladen:
D'après ce que je vois, cela devrait être correct.

J'ai résolu la fonction inverse de fermeture :>

Mais quand vous êtes libre, pouvez-vous m'aider à vérifier le trailing stop de la bougie, je ne peux toujours pas le résoudre :(