[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 371

 

Die Wiederherstellung der Exe-Assoziationen hat nicht geholfen - der Kool-Reader ist ein Exe-Reader. Ich dachte, es würde helfen. Schade. Gibt es noch etwas anderes? Sie haben dort einen Link zu anderen Dateierweiterungen, aber kein fb2.
 
belous:

Leute...Hilfe wer weiß!!!!


Das Wesentliche der Strategie: Einstieg durch Stochastik (5,14,3), Ausstieg ebenfalls durch Stochastik, aber mit einer anderen Periode (5,3,3). Hier verstehe ich nicht, wie kann zdelat einen Ausgang von Stochastik, und nicht auf die inverse Signal?
Ich habe ein Problem und ich habe keine Ahnung, wie es gelöst werden kann, ich werde versuchen, zu erklären.
Es gibt also 2 Funktionen in dem Code, den ich dargelegt habe
...

Posten Sie die Codes im Forum mit dem SRC. Und es gibt nichts, worüber man schreien müsste.


 
Hallo.wer kann vorschlagen, was das Problem mit dem Berater ist.beim Kompilieren gibt den Fehler, dass Sie eine Klammer zu setzen haben, ich put-compile gibt eine andere, dass die Klammer falsch gesetzt ist.alle meine Kopf ist bereits gebrochen.
Dateien:
 
artemka_1981:
Hallo, kann mich bitte jemand beraten, was das Problem mit meinem EA ist. Ich erhalte einen Fehler während der Kompilierung, ich erhalte einen Fehler, wenn ich eine schließende Klammer schreibe und der Compiler gibt mir einen anderen Fehler, wenn ich eine schließende Klammer schreibe.

Wenn Sie am Ende eine schließende geschweifte Klammer setzen,

Zeilen wie OrderMagicNumber() == ) hinzufügen

und eine schließende Klammer in eine von ihnen setzen, wird alles kompiliert

 
Können Sie mir sagen, wie ich den Ablauf einer Bestellung richtig einstellen kann? Ich habe versucht, TimeCurrent()+60 zu schreiben, die Aufträge werden nicht geöffnet. Im Allgemeinen ist dieser Parameter beim Broker erlaubt
 
sss2019:
Sagen Sie mir, wie man den Ablauf der Bestellung richtig einstellt? Ich habe versucht, TimeCurrent()+60 zu schreiben, es öffnet keine Aufträge. Im Allgemeinen ist dieser Parameter beim Makler zulässig

60 ist 60 Sekunden, also können Sie den Wert wahrscheinlich nicht so niedrig ansetzen (ich habe z. B. ein Limit von 10 Minuten).

Versuch TimeCurrent()+60*60*24 - ein Tag

und sehen Sie, welcher Fehlercode zurückkommt

 
ilunga:

Wenn Sie am Ende eine schließende geschweifte Klammer setzen,

Zeilen wie OrderMagicNumber() == ) hinzufügen

und eine schließende Klammer in eine von ihnen setzen, wird alles kompiliert

Hallo. Ich habe eine Klammer hinzugefügt, und jetzt lautet der Fehler '\end_of_program' - unausgewogene linke Klammer. Unklar ( setzt eine schließende Klammer in eine davon )
if(tim<iTime(Symbol(),PERIOD_D1,0)) return(1);
 return(0);
 }
 
 OrderMagicNumber()

 
artemka_1981:
Hallo. Ich habe eine Klammer hinzugefügt, und jetzt lautet der Fehler '\end_of_program' - unausgewogene linke Klammer. Unklar ( setzt eine schließende Klammer in eine davon )

kompiliert er wie folgt:

//+------------------------------------------------------------------+
//|                                                Open_Buy_Sell.mq4 |
//|                                                                  |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#define magic 999

#property link      "http://www.metaquotes.net"
extern double  _lots         = 0.01;
extern int     _takeProfit   = 1200;
extern int      maxpos       = 1;     // количество поз
extern bool    _trailingStop = true;
//+------------------------------------------------------------------+

int start()
  {
   double _slBuy=0.0,_slSell=0.0, _tpBuy=0.0, _tpSell=0.0, _opBuy=0.0, _opSell=0.0;

//if (iVolume(Symbol(),PERIOD_D1,0)>1) return;
//     if (Volume[0]>1) return;
     if (_trailingStop){ 
     _TrailingStop();
      }
   _opBuy=NormalizeDouble(iHigh(Symbol(),0,1), Digits);
   _slBuy=NormalizeDouble(iLow(Symbol(),PERIOD_D1,1), Digits);
   _tpBuy=NormalizeDouble(Ask+_takeProfit*Point, Digits);
      if ( _opBuy<Ask && CountPos(1)<maxpos)
       if(barOpen(OP_BUYSTOP)==1 ||barOpen(OP_BUY)==1 )
        OrderSend(Symbol(),OP_BUYSTOP,_lots,_opBuy,15,_slBuy,_tpBuy,"Open_Buy_Sell",0,Green);

   _opSell=NormalizeDouble(iLow(Symbol(),0,1), Digits);
   _slSell=NormalizeDouble(iHigh(Symbol(),PERIOD_D1,1), Digits);
   _tpSell=NormalizeDouble(Bid-_takeProfit*Point, Digits);
     if (_opSell>Bid && CountPos(0)<maxpos)
      if(barOpen(OP_SELLSTOP)==1 ||barOpen(OP_SELL)==1 )
       OrderSend(Symbol(),OP_SELLSTOP,_lots, _opSell,15,_slSell,_tpSell,"Open_Buy_Sell",0,Red);
//----
   return(0);
  }
//+------------------------------------------------------------------+  
 //Проверяем количесвто позиций.
   int CountPos(int type) 
{//Описание http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=66

int i;
int col;
int count=0 ;
for(i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS)==true)
{
if(OrderType()==OP_BUYSTOP && OrderSymbol()==Symbol() && type==1 && OrderMagicNumber()== magic){count++;}
if(OrderType()==OP_SELLSTOP && OrderSymbol()==Symbol() && type==0 && OrderMagicNumber()== magic){count++;}
         }
       }   
return(count);
}
//+------------------------------------------------------------------+
void _TrailingStop(){
   int i;
   double _stopLossSellF=NormalizeDouble(iHigh(Symbol(),0,1), Digits),
          _stopLossBuyF=NormalizeDouble(iLow(Symbol(),0,1), Digits);
   if (OrdersTotal()>0){
      for (i=OrdersTotal()-1; i>=0; i--){
         if (OrderSelect(i, SELECT_BY_POS)){
            if (OrderSymbol()==Symbol() && OrderMagicNumber()==magic){
             
               if (OrderType()==OP_BUY && OrderOpenPrice() < _stopLossBuyF){
                  while (IsTradeContextBusy()) Sleep(1000);
                  RefreshRates();
                  OrderModify(OrderTicket(),OrderOpenPrice(),_stopLossBuyF,OrderTakeProfit(),OrderExpiration(),CLR_NONE);
               }
           
               if (OrderType()==OP_SELL && OrderOpenPrice() > _stopLossSellF && _stopLossSellF!=0.0){
                  while (IsTradeContextBusy()) Sleep(1000);
                  RefreshRates();
                  OrderModify(OrderTicket(),OrderOpenPrice(),_stopLossSellF,OrderTakeProfit(),OrderExpiration(),CLR_NONE);
               }
            }
         }
      }
   }
return;
}
int barOpen(int ty)
{
datetime tim=0;
 for(int i=0; i<=OrdersTotal(); i++)
    {  
       if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))continue;
       if(OrderSymbol() !=Symbol()|| OrderMagicNumber()!= magic|| OrderType()!=ty) continue; 
       if(tim<OrderOpenTime())        
          tim=OrderOpenTime();
   }
 for(i=0; i<=OrdersHistoryTotal(); i++)
    {  
       if (!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))continue;
       if(OrderSymbol() !=Symbol()|| OrderMagicNumber()!= magic|| OrderType()!=ty) continue; 
       if(tim<OrderOpenTime())        
          tim=OrderOpenTime();
   }
 
if(tim<iTime(Symbol(),PERIOD_D1,0)) return(1);
 return(0);
}
 

Können Sie mir sagen, ob ich bei zwei aufeinanderfolgenden OrderSend-Befehlen zum Setzen von Aufträgen die Funktion IsTradeAllowed dazwischen platzieren muss?

oder ist es nicht notwendig und der EA geht vom ersten OrderSend-Aufruf zum zweiten erst nach einer erfolgreich platzierten Bestellung über ?

Wenn IsTradeAllowed weiterhin erforderlich ist, welche Zeitverzögerung sollte in der while-Schleife eingestellt werden?

 
Gab es einen Fehler in dieser Zeile? Ich danke Ihnen vielmals.
if(OrderType()==OP_BUYSTOP && OrderSymbol()==Symbol() && type==1 && OrderMagicNumber()==MAGICMA ){count++;}
if(OrderType()==OP_SELLSTOP && OrderSymbol()==Symbol() && type==0 && OrderMagicNumber()==MAGICMA ){count++;}
ilunga:

Auf diese Weise wird es kompiliert:

Nun, wenn das Testen nicht öffnen keine Transaktion in das Protokoll schreibt Open_BuyS_SellS EURUSD,Daily: OrderSend Fehler 131