[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 475

 
Zhunko:

Eine Beschreibung von was? Was meinen Sie mit Beschreibung? Es ist alles da.

Beschreibung der Funktionen in der Header-Datei. Beispiele für die Verwendung im Testskript.


Tut mir leid, hab's gesehen. Hab's gesehen.
 

Hallo. Helfen Sie mir, den Code eines EAs zu korrigieren. Das Problem im Code ist folgendes: Wenn der Preis > oder = vorgeschriebenen Ebenen dann ein Geschäft eröffnet. Der Preis kann beliebig weit über diesen Niveaus liegen, bzw. der EA eröffnet eine Reihe von Trades.

Ich möchtedas Symbol">"aus dem Code entfernen und nur"=" übrig lassen. Ich selbst entferne das Symbol ">", aber beim Kompilieren erhalte ich eine Menge Fehler.HILFE MIR.

 
// < 0 - Dn
// > 0 - Up
int Signal()
{
double RSI = iRSI(NULL,15,RSIperiod,RSI_price,SignalBar);
double Stoch = iStochastic(NULL,15,Stoch_K,Stoch_D,Stoch_slowing,Stoch_method,Stoch_price,Stoch_mode,SignalBar);
double CCI = iCCI(NULL,15,CCI_period,CCI_price,SignalBar);

double MA2 = iMA(NULL,15,ma2_period,ma2_shift,ma2_method,ma2_price,SignalBar);
double IchiA = iIchimoku(NULL, 15, tenkan, kijun, senkou_span_b, 3, SignalBar);
double IchiB = iIchimoku(NULL, 15, tenkan, kijun, senkou_span_b, 4, SignalBar); 

    if(GO && SignalType_1 && RSI >= 65 && Stoch >= 80 && CCI >= 100) {GO=false; return(+1);}//запретить повторный вход (+1);
    if(GO && SignalType_2 && Bid >= MA2 && RSI >= 65 && Stoch >= 80 && CCI>=100) {GO=false; return(+1);}//запретить повторный вход return(+1);
    if(GO && SignalType_3 && Bid >= IchiA && RSI >= 65 && Stoch >= 80 && CCI>=100) {GO=false; return(+1);}//запретить повторный вход (+1);
    
   
    
    if(GO && SignalType_1 && RSI <= 35 && Stoch <= 20 && CCI <= -100) {GO=false; return(-1);}//запретить повторный вход (-1);
    if(GO && SignalType_2 && Ask <= MA2 && RSI <= 35 && Stoch <= 20 && CCI <= -100) {GO=false; return(-1);}//запретить повторный вход (-1);
    if(GO && SignalType_3 && Ask <= IchiB && RSI <= 35 && Stoch <= 20&& CCI <= -100) {GO=false; return(-1);}//запретить повторный вход (-1);
    
    if(OrdersTotal()==0)GO=true;
    
    return(0);
}


Dies ist ein Teil des Codes, wenn Sie den gesamten Code benötigen, werde ich ihn posten.

Vielen Dank im Voraus.
 

Setzen Sie eine Zeile vor die Bedingungsprüfung

if(OrdersTotal()>0)return(0);

Ich habe noch einmal nachgeschaut und festgestellt, dass der Code nicht von Ihnen stammt und Sie keine Ahnung haben, wie Sie ihn reparieren können. Sie haben bereits alles in Ihrem Code, suchen Sie nach der Stelle, an der er Aufträge erteilt und warum er die GO-Variable ignoriert.

 
Roger:

Setzen Sie eine Zeile vor die Bedingungsprüfung

if(OrdersTotal()>0)return(0);

Ich habe noch einmal nachgesehen und verstanden, dass der Code nicht von Ihnen stammt und Sie keine Ahnung haben, wie Sie ihn reparieren können. Sie haben bereits alles in Ihrem Code, suchen Sie nach der Stelle, an der er Aufträge erteilt und warum er die GO-Variable ignoriert.

Der Code stammt nicht von mir, sondern wurde gemäß meinen AGB für mich geschrieben, und ich habe keine Ahnung, wie man ihn beheben kann, deshalb habe ich ihn angesprochen. Danke für die Antwort
 

Guten Tag.

Können Sie mir bitte (in einer privaten Nachricht) mitteilen, wo die Angebote an den Wochenenden sind?

 

Hallo zusammen, ich brauche Hilfe. Ich weiß nicht, wo der Fehler liegt!

Der Punkt ist folgender. Wir setzen den Referenzpunkt in der Zeit, sagen wir 29/10/2012 00:00. Erstellen Sie ein Array und fügen Sie die Werte vom Startpunkt bis zum jetzigen Zeitpunkt ein. Prüfen Sie dann, ob die von mir festgelegten Bedingungen für Preisabweichungen erfüllt sind. Wenn wir eine Abweichung ==10 erreichen. Wir zeigen eine Meldung an und verschieben den Zeitpunkt von dem zuvor eingestellten auf 2 Tage nach vorne. Und wiederholen Sie den Vorgang. Das Problem ist, dass das folgende Array ständig aufgefüllt werden soll, sagen wir mal von einem Punkt 29/10/2012 00:00 haben wir nicht genug Werte und jeder neu gebildete Minutenbalken soll darin platziert und überprüft werden und der Referenzpunkt wird nicht verschoben, bis die Bedingungen ==10 mal übereinstimmen. Aber aus irgendeinem Grund beginnt es bei jedem Tick mit der Zählung der Werte vom Startpunkt aus neu!!!!

Helfen Sie mit, das Problem zu lösen! VIELEN DANK AN ALLE FÜR IHRE HILFE!!!

//-----------------------------------------------------------------------------------------------------------------------------------
datetime Tochka_History = D'2012.10.10 17:30';           
double d[];                                            
double a;                                                 
int i;                                                   
int r=0;                                                 
int j=0;                                                  
int c=0;                                                    
datetime time;                                              
int bars;                                                   
string l;
//-----------------------------------------------------------------------------------------------------------------------------------
int start(){
if(j==0){
l=TimeToStr(Tochka_History,TIME_DATE|TIME_MINUTES);
Alert("Точка отсчета - ",l,"; Счетчик c - ",c);                                                                          
if(TimeCurrent()>=Tochka_History){                                                                                   
bars=iBarShift(NULL,PERIOD_M1,Tochka_History,false);                                                                 
time=iTime(NULL,PERIOD_M1,i);                                                                                                                                            
ArrayResize(d,bars);                                                                                                 
for(i=bars;i>0;i--) d[i]=(iHigh(NULL,PERIOD_M1,i)+iLow(NULL,PERIOD_M1,i))/2;                                        
for(i=bars;i>0;i--) Uslovie();}}}                                                                                     
//-----------------------------------------------------------------------------------------------------------------------------------
void Uslovie(){
if(r==0){a=d[i];r=1;}
if(a+10*Point<=d[i] && r==1){r=0; c=c+1; Alert("Счетчик c - ",c);}
if(c==10){Alert("Значение С достигло 10"); j=1; Smeshenie();}}
//-----------------------------------------------------------------------------------------------------------------------------------
void Smeshenie(){
Tochka_History=Tochka_History+2*24*60*60;
l=TimeToStr(Tochka_History,TIME_DATE|TIME_MINUTES);
Alert("Новая точка отсчета времени - ",l);
if(TimeDayOfWeek(Tochka_History)==6||TimeDayOfWeek(Tochka_History)==0){
Tochka_History=Tochka_History+1*24*60*60;
l=TimeToStr(Tochka_History,TIME_DATE|TIME_MINUTES);
Alert("Новая точка отсчета времени, если выпали выходные - ",l);} j=0;}
//-----------------------------------------------------------------------------------------------------------------------------------
 
merkulov.artem:

Hallo zusammen, ich brauche Hilfe. Ich weiß nicht, wo der Fehler liegt!

Der Punkt ist folgender. Wir setzen den Referenzpunkt in der Zeit, sagen wir 29/10/2012 00:00. Erstellen Sie ein Array und fügen Sie die Werte vom Startpunkt bis zum jetzigen Zeitpunkt ein. Prüfen Sie dann, ob die von mir festgelegten Bedingungen für Preisabweichungen erfüllt sind. Wenn wir eine Abweichung ==10 erreichen. Wir zeigen eine Meldung an und verschieben den Zeitpunkt von dem zuvor eingestellten auf 2 Tage nach vorne. Und wiederholen Sie den Vorgang. Das Problem ist, dass das folgende Array ständig aufgefüllt werden soll, sagen wir mal von einem Punkt 29/10/2012 00:00 haben wir nicht genug Werte und jeder neu gebildete Minutenbalken soll darin platziert und überprüft werden und der Referenzpunkt wird nicht verschoben, bis die Bedingungen ==10 mal übereinstimmen. Aber aus irgendeinem Grund beginnt es bei jedem Tick die Werte vom Startpunkt aus neu zu zählen!!!

Helfen Sie mir, dieses Problem zu lösen! ICH DANKE IHNEN ALLEN FÜR IHRE HILFE!

Das dritte Mal, dass ich Ihre Anfrage sehe und niemand reagiert, warum denken Sie so? Wahrscheinlich verstehen die Menschen einfach nicht, was von ihnen verlangt wird.

Wenn wir Abweichungen ==10 erreichen. Wir zeigen eine Meldung an und verschieben den Punkt um 2 Tage von dem zuvor festgelegten Punkt .....Aber aus irgendeinem Grund fängt es an, bei jedem Tick die Werte vom Startpunkt aus neu zu berechnen!!!

Das liegt daran, dass Ihr Code nicht überprüft, von wo aus er startet. Er beginnt also jedes Mal vom Ausgangspunkt aus. Prüfen Sie mit Ihrem Drucker, ob es eine Abweichung von 10 gibt und ob sich der Punkt wirklich um 2 Tage verschiebt. Wird er um 10 und der Wegpunkt um 2 Tage verschoben, so ist vor der Eingabe des nächsten Häkchens zu prüfen, ob der Startpunkt wirklich eingegeben werden muss oder bereits eingegeben ist.

Sie haben eine komplizierte Art, der Wahrheit auf die Spur zu kommen. Ich bin sicher, wenn Sie das Problem selbst formulieren, wird es Ihnen einen einfacheren Weg zur Lösung aufzeigen.

P.S.

Von allen Lösungen für ein Problem ist die einfachste immer die am schwersten zu findende, denn um sie zu finden, muss man recyceln und einen Haufen Müll durchsuchen. Sie können also frei formulieren - eine einfache Lösung ist nicht gleichbedeutend mit einer schnellen Lösung. Vielleicht retten Ihnen die Menschen hier mehr als nur einen Tag Ihres Lebens.

 

Guten Tag!!! Super duper geniale Frage. Wie halte ich den Tester an, wenn er die richtige Stelle im Code erreicht hat? Ich kann in der Hilfe nichts dergleichen finden. Das kann es doch gar nicht sein, und die Funktion wäre wertvoll!

2. Das Verhalten der iCustom-Funktion. In Wirklichkeit erzeugt die Funktion immer einen Druck von -1 (außer wenn ein Puffer Ecken des Zickzacks). Aber im Testgerät sehen alle 0. Warum ein solcher Unterschied?

double strela1 = iCustom(NULL, taymfreym, "индикатор", 2, 1);
            double strela2 = iCustom(NULL, taymfreym, "индикатор", 3, 1);
            
            int BUY=0,SELL=0;int ticket; 
            Print (  " strela1 " , strela1 , "   strela2  " , strela2 );


 
Dimka-novitsek:
Guten Tag!!! Super duper geniale Frage. Wie halte ich den Tester an, wenn er die richtige Stelle im Code erreicht hat? Ich kann in der Hilfe nichts dergleichen finden. Das kann es doch gar nicht sein, und die Funktion wäre wertvoll!

senden Sie ihm einen Druck auf die Taste "Pause/Break".

nach einem Artikel darüber suchen, wie man sie versendet.

 
Ich danke Ihnen! Ich werde danach Ausschau halten!