[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 964

 
volshebnik:
Warum nimmt die Geschwindigkeit des Testers gegen Ende des dritten Jahres ab?


es gibt ein solches Problem - ich hatte dieses Problem auch, wenn der Expert Advisor viele Trades pro Jahr macht - vielleicht werden viele Daten für die Anzeige des Endergebnisses gespeichert oder vielleicht fressen die Indikatorpuffer Speicher

als eine ganze Säge - ich weiß nicht, mit mir zu tragen - für das große Bild, den Test für 10 Jahre, und es ist besser, ein Jahr zu einer Zeit zu optimieren und dann eine Auswahl der optimalen Parameter

 

Ich möchte verschiedene Crosses analysieren und anschließend Aufträge für ein anderes Paar erteilen:

int magic = 428;//magische Nummer des Expert Advisors
extern double volume = 0.1;//Volumen der zu erteilenden Bestellung
extern int Schlupf = 3;//Schlupf
int OPB;//die Marke des Kaufauftrags
int OPS;//die Kennzeichnung des zu verkaufenden Auftrags
int Gewinn=1;//Gewinnniveau der offenen Bestellung
string comB = "Einstieg in den Trend bei Buy; // Kommentar zur Order
string comS = "Entry by trend to Sell";// Kommentar zur Bestellung
double StochasticCAD;//Position der wichtigsten Stochastik-Linie auf dem aktuellen Balken des USDCAD
double StochasticAUD;//Position der wichtigsten Stochastiklinie auf dem aktuellen Balken für AUDUSD

double SARCAD;//die aktuelle Position des Indikators auf USDCAD
double SARCAD;//Position des Indikatorbalkens zurück auf USDCAD
double SARAUD;//aktueller Stand des Indikators auf AUDUSD
double SARСAUD;//Position des Indikators bar zurück auf AUDUSD


int start()
{

//______________________________определение значений переменных_______________________


StochasticCAD = iStochastic("USDCAD",30,5,3,3,1,1,0,0);
StochasticAUD = iStochastic("AUDUSD",30,5,3,3,1,1,1,0);

SARCAD=iSAR("USDCAD",30,0.02,0.2,0);
SARСCAD=iSAR("USDCAD",30,0.02,0.2,1);
SARAUD=iSAR("AUDUSD",30,0.02,0.2,0);
SARСAUD=iSAR("AUDUSD",30,0.02,0.2,1);

double bidCAD =MarketInfo("USDCAD",MODE_BID);
double askCAD =MarketInfo("USDCAD",MODE_ASK);
double bidAUD =MarketInfo("AUDUSD",MODE_BID);
double askAUD =MarketInfo("AUDUSD",MODE_ASK);




//______________________________поиск и закрытие ордеров_______________________________________


int i;
for(i=0; i<=OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
break;// wenn die Bestellnummer i nicht existiert, wird die Suche abgebrochen

if (OrderSymbol() != "GBPUSD" || OrderMagicNumber() != magic) // wenn die Order nicht von dem Paar stammt, in dem sich unser EA befindet
continue; // Überspringen Sie den Auftrag und sehen Sie sich den nächsten Auftrag an.


//_______schließen Kaufen_______
if (OrderType() == OP_BUY && OrderProfit()>=Profit)
// wenn die Bestellung Kaufen lautet
{
OPB=1;
if(StochasticCAD==0 || StochasticAUD==100 || SARCAD<bidCAD || SARAUD>askAUD)//und der Markt ist im Begriff, umzukehren
{
OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Wheat); // Schließen Sie die Order, wenn sie im Gewinn ist
OPB=0;
}
}
sonst
{
//_______schließen Verkaufen_______
if(OrderType() == OP_SELL && OrderProfit()>=Profit)// wenn Order Verkauf ist
{OPS=1;
if(StochasticCAD==100 || StochasticAUD==0 || SARCAD>askCAD || SARAUD<bidAUD)//und der Markt ist nahe an einer Umkehrung
{
OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,PaleTurquoise); // schließen, wenn sie im Gewinn ist
OPS=0;
}
}
}
}

//______________выставление ордеров______________________________________________________________________


if (SARCAD>askCAD && SARCAD<bidCAD && SARAUD<bidAUD && SARCAUD>askAUD && OPB<1)//Definieren Sie Bedingungen

{ //_______Buy_______

if(!IsTradeAllowed())
{
Alert("Handels-Thread ist besetzt, versuchen Sie erneut zu kaufen...");
zurück(-1);
}
OPB =OrderSend("GBPUSD",OP_BUY,Volumen,Ask,Slippage,0,0,comB,magic,0,Red); //eine Order setzen

if(OPB == -1)
{
Alert("GBPUSD", "Fehler: kaufen", GetLastError());
zurück(-1);
}

if(OPB > 1)
Alert("GBPUSD", "Wir haben einen Kaufauftrag!)

}
sonst
{//_______Sell_______

if(SARCAD>askCAD && SARCAD<bidCAD && SARCADAUD<bidAUD && SARAUD>askAUD && OPS<1)//Definieren Sie Bedingungen

{

if(!IsTradeAllowed())
{
Alert("Der Handelsfaden ist besetzt, versuchen Sie erneut zu verkaufen...");
zurück(-1);
}

OPS=OrderSend("GBPUSD",OP_SELL,volume,Bid,slippage,0,0,comS,magic,0,Blue); //eine Order einstellen


if(OPS == -1)
{
Alert("GBPUSD", "Fehler: Verkaufen", GetLastError());
zurück(-1);
}

wenn(OPS > 1)
Alert("GBPUSD", "Verkaufsauftrag stellen!)

}
}
return(0);//beenden
}


Wenn ich es teste, kommt nichts heraus. Keine Ergebnisse.

Im Protokoll gibt es eine Reihe von Fehlern:

Können Sie mir sagen, was los ist?

 
ViktorF:

Ich möchte verschiedene Crosses analysieren und dann Aufträge für ein anderes Paar erteilen:

int magic = 428;//magische Nummer des Expert Advisors
extern double volume = 0.1;//Volumen der platzierten Order
extern int slippage = 3;//slippage
int OPB;//Marke der platzierten Buy-Order
int OPS;//Marke der platzierten Sell-Order
int Profit=1;//Gewinnniveau der eröffneten Orders
string comB = "Entry by trend to Buy"; //Auftragsanfrage
string comS = "Entry by trend to Sell"; //Auftragsanfrage
double StochasticCAD;//Position der Stochastik-Hauptlinie auf dem aktuellen Balken in USDCAD
double StochasticAUD;//Position der Stochastik-Hauptlinie auf dem aktuellen Balken in AUDUSD

double SARCAD;//aktuelle Position des Indikators auf USDCAD
double SARCAD;//Position des Indikators zurück auf USDCAD
double SARAUD;//aktuelle Position des Indikators auf AUDUSD
double SARAUD;//Position des Indikators zurück auf AUDUSD


int start()
{



//______________________________ Bestimmung der Variablenwerte_______________________


StochasticCAD = iStochastic("USDCAD",30,5,3,3,1,1,0,0);
StochasticAUD = iStochastic("AUDUSD",30,5,3,3,1,1,1,0);

SARCAD=iSAR("USDCAD",30,002,0.2,0);
SARCAD=iSAR("USDCAD",30,0.02,0.2,1);
SARAUD=iSAR("AUDUSD",30,0.02,0.2,0);
SARAUD=iSAR("AUDUSD",30,0.02,0.2,1);

double bidCAD =MarketInfo("USDCAD",MODE_BID);
double askCAD =MarketInfo("USDCAD",MODE_ASK);
double bidAUD =MarketInfo("AUDUSD",MODE_BID);
double askAUD =MarketInfo("AUDUSD",MODE_ASK);




//______________________________ Such- und Schließaufträge_______________________________________


int i;
for(i=0; i<=OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
break;// wenn Ordernummer i nicht existiert, die Suche abbrechen

if (OrderSymbol() !="GBPUSD" || OrderMagicNumber() != magic) // wenn die Order nicht aus dem Paar stammt, in dem sich unser Expert Advisor befindet
continue; // überspringe sie und betrachte die folgende Order


//_______close Buy_______
if (OrderType() == OP_BUY && OrderProfit()>=Profit)
// wenn die Order BUY ist
{
OPB=1;
if(StochasticCAD==0 || StochasticAUD==100 || SARCAD<bidCAD || SARAUD>askAUD)//und der Markt kurz vor einer Umkehrung steht
{
OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Wheat); // close it if it is BUY
OPB=0;
}
}
else
{
//_______schließen Verkaufen_______
if(OrderType() == OP_SELL && OrderProfit()>=Profit)// wenn die Order Verkaufen ist
{OPS=1;
if(StochasticCAD==100 || StochasticAUD==0 || SARCAD>askCAD || SARAUD<bidAUD)//und der Markt steht kurz vor einem Reversal
{
OrderClose(OrderTicket(),OrderLots(),Ask,slippage,PaleTurquoise); // close it if in profit
OPS=0;
}
}
}
}

//______________ Auftragserteilung ______________________________________________________________________


if (SARCAD>askCAD && SARCAD<bidCAD && SARAUD<bidAUD && SARAUD>askAUD && OPB<1)// Bedingungen definieren

{ //_______Buy_______

if(!IsTradeAllowed())
{
Alert("the trade thread is busy, try again buy...");
return(-1);
}
OPB =OrderSend("GBPUSD",OP_BUY,Volumen,Ask,Slippage,0,0,comB,magic,0,Red); //Order setzen

if(OPB == -1)
{
Alert("GBPUSD", "error: buy", GetLastError());
return(-1);
}

if(OPB > 1)
Alert ("GBPUSD", "Put Buy Order!");

}
else
{//_______Sell_______

if(SARCAD>askCAD && SARCAD<bidCAD && SARCAD<bidAUD && SARAUD>askAUD && OPS<1)//define conditions

{

if(!IsTradeAllowed())
{
Alert("the trade thread is busy, try again to sell...");
return(-1);
}

OPS=OrderSend("GBPUSD",OP_SELL,volume,Bid,slippage,0,0,comS,magic,0,Blue); //set order


if(OPS == -1)
{
Alert("GBPUSD", "error: sell", GetLastError());
return(-1);
}

if(OPS > 1)
Alert ("GBPUSD", "Put Sell order!");

}
}
return(0);//exit
}


Bei der Prüfung kommt nichts heraus. Sie führt zu keinen Ergebnissen.

Es gibt eine Reihe von Fehlern im Protokoll:

Können Sie mir sagen, was los ist?


Lernen Sie zunächst, wie man durch gleichzeitiges Drücken von "Gegenklick + Alt + M" einen Code in ein Fenster einfügt, so dass die Leute in Ihrem Halimatry navigieren und Empfehlungen geben können.

Versuchen Sie auch, einen Doppelklick auf die entsprechende Fehlermeldung im Protokoll zu machen - vielleicht bringt Sie das auf andere Gedanken...

 
Roman.:


Lernen Sie zunächst, wie man durch gleichzeitiges Drücken der Tasten "Strg + Alt + M" Code in ein Fenster einfügt, damit Sie die Leute durch Ihren Unsinn führen und Empfehlungen geben können.

Versuchen Sie auch, im Logbuch auf die entsprechende Fehlermeldung zu doppelklicken - vielleicht bringt Sie das auf eine Idee...


Die Fehler stehen im Protokoll des Testers, nicht im des Compilers... (Sie können es sogar auf dem Bild sehen, wenn Sie erst schauen und dann kommentieren...). Ein Doppelklick führt dort zu nichts...

 
int magic = 428;//магический номер эксперта
extern double volume = 0.1;//объем выставляемого ордера
extern int slippage = 3;//проскальзывание
int OPB;//метка выставляемого ордера на покупку
int OPS;//метка выставляемого ордера на продажу
int Profit=1;//уровень профита открытых ордеров
string comB = "Вход по тренду на Buy";//комментарий ордера
string comS = "Вход по тренду на Sell";//комментарий ордера
double StochasticCAD;//положение основной линии Стохастики на текущем баре по USDCAD
double StochasticAUD;//положение основной линии Стохастики на текущем баре по AUDUSD

double SARCAD;//текущее положение индикатора по USDCAD
double SARСCAD;//положение индикатора бар назад по USDCAD
double SARAUD;//текущее положение индикатора по AUDUSD
double SARСAUD;//положение индикатора бар назад по AUDUSD

double bidCAD;
double askCAD;
double bidAUD;
double askAUD;

int start()
  {
  
//______________________________определение значений переменных_______________________ 


      StochasticCAD = iStochastic("USDCAD",30,5,3,3,1,1,0,0); 
      StochasticAUD = iStochastic("AUDUSD",30,5,3,3,1,1,1,0);
      
      SARCAD=iSAR("USDCAD",30,0.02,0.2,0);
      SARСCAD=iSAR("USDCAD",30,0.02,0.2,1);
      SARAUD=iSAR("AUDUSD",30,0.02,0.2,0);
      SARСAUD=iSAR("AUDUSD",30,0.02,0.2,1);
      
      bidCAD   =MarketInfo("USDCAD",MODE_BID);
      askCAD   =MarketInfo("USDCAD",MODE_ASK);
      bidAUD   =MarketInfo("AUDUSD",MODE_BID);
      askAUD   =MarketInfo("AUDUSD",MODE_ASK);


      

//______________________________поиск и закрытие ордеров_______________________________________   
    

    int i;
    for(i=0; i<=OrdersTotal(); i++)
    {
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
     break;// если ордер номер i не существует, прекращаем перебор
  
        if (OrderSymbol() != "GBPUSD" || OrderMagicNumber() != magic) // если ордер не с этой пары, на которой стоит наш эксперт
        continue; // пропускаем его и смотрим на следующий за ним ордер
        

      //_______закрытие Buy_______       
        if (OrderType() == OP_BUY && OrderProfit()>=Profit) 
        // если ордер бай 
        {
         OPB=1;
         if(StochasticCAD==0 || StochasticAUD==100 || SARCAD<bidCAD || SARAUD>askAUD)//и рынок близок к развороту
          {
           OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Wheat); // закроем его, если он в профите
           OPB=0;
          }
        }
        else  
        {
      //_______закрытие Sell_______ 
         if(OrderType() == OP_SELL && OrderProfit()>=Profit)// если ордер селл
          {OPS=1;
           if(StochasticCAD==100 || StochasticAUD==0 || SARCAD>askCAD || SARAUD<bidAUD)//и рынок близок к развороту
            {
             OrderClose(OrderTicket(),OrderLots(),Ask,slippage,PaleTurquoise); // закроем его, если он в профите
             OPS=0;
            }
          }
        }
    }
        
//______________выставление ордеров______________________________________________________________________
    
  
    if (SARCAD>askCAD && SARСCAD<bidCAD && SARAUD<bidAUD && SARСAUD>askAUD && OPB<1)//определим условия
     
     {  //_______Buy_______ 

          if(!IsTradeAllowed())
               {
                  Alert("занят торговый поток, повторим попытку бай...");
                  return(-1);
               }
          OPB =OrderSend("GBPUSD",OP_BUY,volume,Ask,slippage,0,0,comB,magic,0,Red); //выставим ордер
            
            if(OPB == -1)
              {
                 Alert("GBPUSD"," ошибка: бай", GetLastError());
                 return(-1);
              }
         
            if(OPB > 1)
            Alert ("GBPUSD","Выставили ордер на покупку!");

     }
      else
     {//_______Sell_______
  
         if (SARСCAD>askCAD && SARCAD<bidCAD && SARСAUD<bidAUD && SARAUD>askAUD && OPS<1)//определим условия
     
         {
          
           if(!IsTradeAllowed())
                {
                   Alert("занят торговый поток, повторим попытку селл...");
                   return(-1);
                }
        
           OPS=OrderSend("GBPUSD",OP_SELL,volume,Bid,slippage,0,0,comS,magic,0,Blue); //выставим ордер


             if(OPS == -1)
               {
                  Alert("GBPUSD"," ошибка: селл", GetLastError());
                  return(-1);
               }
         
             if(OPS > 1)
             Alert ("GBPUSD","Выставили ордер на продажу!");

         }
     }    
   return(0);//выход
  }

 
ViktorF:


Ein Test für alle Tics? Probleme mit der Geschichte
 
Vinin:

Ein Test für alle Tics? Probleme mit der Geschichte

D.h. müssen Sie die Historie für alle an der Analyse beteiligten Paare neu laden?
 
ViktorF:

D.h., Sie müssen die Historie für alle Paare, die an der Analyse beteiligt sind, neu laden?


Vielleicht. Natürlich nur, wenn die Maklerfirma dies unterstützt.

Aber wir sollten nicht vergessen, dass Sie im Tester Positionen für das aktuelle Symbol eröffnen können, und es gibt einige Einschränkungen für andere Symbole

 
Vinin:


Das ist möglich. Natürlich nur, wenn die Maklerfirma dies unterstützt.

Denken Sie daran, dass Sie im Tester nur Positionen für das aktuelle Instrument eröffnen können und dass es einige Einschränkungen für andere Instrumente gibt.


Was ist ein DC? Und welche Einschränkungen gibt es für andere Instrumente?
 
ViktorF:

Was ist ein Maklerunternehmen? Und welche Einschränkungen gibt es für andere Symbole?


DC - Dealing Desk

Im Tester für andere Instrumente können Sie nur den Eröffnungskurs am Null-Bar abrufen, Ticks für andere Instrumente werden nicht modelliert, das Marktumfeld ist fast unzugänglich.

Der Handel mit anderen Instrumenten wird nicht eröffnet.

Wenn Sie eine korrekte Multicurrency-Analyse durchführen müssen, sollten Sie besser MT5 verwenden. Es gibt einen Multicurrency-Tester.