Hilfe bei der Codierung - Seite 657

 

Liebe Freunde,

Funktioniert diese Ea auf verschiedenen Paaren zu einem bestimmten Zeitpunkt?

Zum Beispiel: auf die einige Zeit arbeiten EURUSD + GBPUSD etc.

Vielen Dank...

Dateien:
 
oguz:

Liebe Freunde,

Funktioniert diese Ea auf verschiedenen Paaren zu einem bestimmten Zeitpunkt?

Zum Beispiel: auf die einige Zeit arbeiten EURUSD + GBPUSD etc.

Vielen Dank...

Hängen Sie es an verschiedene Charts mit verschiedenen magischen Zahlen und es sollte gut funktionieren. Andernfalls können Sie, dem Code nach zu urteilen, ein großes Durcheinander haben
 
mladen:
Hängen Sie sie an verschiedene Diagramme mit unterschiedlichen magischen Zahlen an und es sollte funktionieren. Andernfalls können Sie, dem Code nach zu urteilen, ein großes Durcheinander haben

Vielen Dank für die ausführlichen Informationen.

Können wir übrigens eine beliebige Zahl als magische Zahl festlegen?

Die standardmäßige magische Zahl ist: "288".

Kann ich sie anhängen: 398, 477, 501, 875 usw. ?

 

Lieber Mladen ,

Kann ich wissen, wie kann ich die entgegengesetzte Signal schließen, um den Code hinzufügen?

extern bool oppositeSignalclose=true;


Ich habe es versucht, aber es schließen auf jedem bar.


Können Sie mir helfen, um zu sehen, was sollte ich brauchen, um für die "OrderSended" schließen alle verkaufen nach kaufen / schließen alle kaufen nach verkaufen zu ändern.

Ich danke Ihnen .

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

Lieber Mladen ,

Kann ich wissen, wie kann ich die entgegengesetzte Signal schließen, um den Code hinzufügen?


Ich habe es versucht, aber es schließen auf jedem bar.


Können Sie mir helfen, um zu sehen, was sollte ich brauchen, um für die "OrderSended" schließen alle verkaufen nach kaufen / schließen alle kaufen nach verkaufen zu ändern.

Ich danke Ihnen .

Invertieren Sie den Aufruf von CountOfOrders, wenn das oppositeSignalclose auf true gesetzt ist (d.h. etwas wie dieses :

if (oppositeSignalclose)
      TotalBuyOrders = CountOfOrders(MagicNumberBuy);
else  TotalBuyOrders = CountOfOrders(MagicNumberSell);
Und machen Sie dasselbe auch für Verkaufsaufträge
 
mladen:

Invertieren Sie den Aufruf von CountOfOrders, wenn der Wert von oppositeSignalclose auf true gesetzt ist (d. h. etwa so:

Und machen Sie das gleiche für Verkaufsaufträge zu

Ist dies ein umgekehrter Handel?

Ich möchte, dass der aktuelle Handel geschlossen wird, wenn das Gegensignal kommt.

Ich habe einen der Codes im Netz gefunden, aber er schließt bei jedem Bar.

Können Sie mir helfen, um zu überprüfen, ob ich die richtige Art und Weise oder andere Dinge, die ich will einfügen.

Und die Kerze Trailing Stop, ich habe getan, was Sie lehren mich auf der letzten Woche, aber immer noch nicht funktionieren.

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

Ist dies ein umgekehrter Handel?

Ich möchte den aktuellen Handel schließen, wenn entgegengesetzte Signal.

Ich finde einen der Code auf Netz, aber es schließen auf jedem bar.

Können Sie mir helfen, zu überprüfen, ist, dass ich den richtigen Weg oder andere Dinge, die ich will einfügen.

Und die Kerze Trailing Stop, ich habe getan, was Sie lehren mich auf der letzten Woche, aber immer noch nicht funktionieren.

Soweit ich das sehe, sollte das korrekt sein.
 

Bitte helfen Sie mir whith Code von Indikatoren zu exportieren.csv
Es erlaubt nur einen Indikator zu schreiben...

Was sollte korrigiert werden, um mehrere Datenspalten nach OHLC zu exportieren...?

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

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

Bitte helfen Sie mir mit dem Code für den Export von Indikatoren in .csv
Es erlaubt nur einen Indikator zu schreiben...

Was sollte korrigiert werden, um mehrere Datenspalten nach OHLC zu exportieren...?

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

//|                                                  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);

  }

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

Fügen Sie einfach die Daten, die Sie exportieren möchten, in die Parameter der Funktion FileWrite() ein
 
mladen:
Soweit ich das sehe, sollte das korrekt sein.

Ich habe die umgekehrte Schließfunktion gelöst :>

Aber wenn Sie frei sind, können Sie helfen, die Kerze Trailing-Stop zu überprüfen, ich kann es immer noch nicht lösen :(

Grund der Beschwerde: