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

 
vegetate писал(а) >>

Können Sie mir sagen, wie ich eine Dimension aus einem zweidimensionalen Array an eine Funktion übergeben kann?

Ich bin über etwas verwirrt.

int testarray[5][2] = {1,2,3,4,5,6,7,8,9,10};// хоть так и можно записать, но в уме нужно держать что это ТАБЛИЦА

void testfunc(int &inarray[][]){ // массив нужно передавать "как есть", но обрабатывать можно выбранную часть
string out_str="Result: "+inarray[i,0];

for (int i=1;i<5;i++){// еще нужно учитывать, что счет в массивах начинается с НУЛЯ. "первый - нулевой"
out_str += (", "+inarray[i,0]); // здесь бы использовал строковую функцию конкатенации
}
Print(out_str);
}
//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int start()
{
//----
Print("Call first:");
testfunc(testarray);
Print("Call second:");
testfunc(testarray);
//----
return(0);
}
//+-----------

 

Ich habe zwei Kopien der Plattform desselben Brokers. Jeder hat sein eigenes Demokonto und einen gemeinsamen Ordner namens Experten.

Wenn ich die erste öffne, sie schließe und dann die zweite öffne, muss ich das Passwort in der zweiten erneut eingeben.

Ich schließe das zweite und öffne das erste - jetzt brauche ich ein Passwort für das erste. Ist das so gewollt?

Ich danke Ihnen!

 
Necron писал(а) >>

high=iHigh(NULL,60,1); Oder ist etwas falsch?

Alles ist korrekt. Wenn Sie jedoch mehrere Zeitrahmen oder Symbole verwenden möchten, müssen Sie eine entsprechende Logik in Ihrem EA erstellen.

 
Vinin >>:

Все правильно конечно. Но если нужно использовать несколько таймфреймов или инструментов, то нужно делать соотвествующую логику в советнике.

OK, ich werde es mir ansehen. Ich danke Ihnen!

 

Ich bin's wieder... Schimpfen Sie nicht zu viel... Ich habe etwa zwei Wochen Erfahrung mit EAs...

Ich habe mein EA Trawl durch Fraktale gemacht, aber es hält zeigt OrderModify Fehler 1 in meinem Protokoll während des Tests, obwohl meine Elche bewegt sich durch Fraktale die ganze Zeit. Ich habe die Funktion FindNearFractal von Kim verwendet. Der Code lautet wie folgt:

   for( cnt=0; cnt< total; cnt++)
     {
      OrderSelect( cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL &&   // check for opened position
         OrderSymbol()==Symbol())  // check for symbol
        {
         if(OrderType()==OP_BUY)   // long position is opened
           {
           // check for trailing stop
            if( TrailFractal)
              {
               OrderModify(OrderTicket(),OrderOpenPrice(), FindNearFractal(NULL,0,MODE_LOWER),0,0,Green);
                     return(0);
                            }
           }
         else // go to short position
           {
            // check for trailing stop
            if( TrailFractal)
              {              
                     OrderModify(OrderTicket(),OrderOpenPrice(), FindNearFractal(NULL,0,MODE_UPPER),0,0,Red);
                     return(0);
               
              }
           }
        }
Und dazu noch eine weitere Frage. Der Code lautet wie folgt:
     for(int i = 0; i < OrdersTotal(); i++)
   {
      // выбор ордера
      if(OrderSelect( i, SELECT_BY_POS) == false) continue;
      // not current symbol
      if(OrderSymbol() != Symbol()) continue;
  }
if(OrderType() == OP_SELL)
{
//при профите >20 pips добавится или докупится ...
 if(OrderProfit()>20)//////если поставить другое условие открывает много позиций
 OrderSend(Symbol(),OP_SELL, Lots,Bid,3, sl_sell,0,"Ma+Fr",16384,0,Red);
  PeriodForSleep=((Time[0]-Time[1])-(TimeCurrent()-Time[0]))*1000; 
Sleep( PeriodForSleep);
}
if(OrderType() == OP_BUY)
{
//при профите >20 pips добавится или докупится ...
 if(OrderProfit()>20)//////если поставить другое условие открывает много позиций
 OrderSend(Symbol(),OP_BUY, Lots,Ask,3, sl_buy,0,"Ma+Fr",16384,0,Lime);
   Sleep( PeriodForSleep);
}
Wenn ich einen Fractal Breakdown (oder ein anderes Signal) anstelle von OrderProfit()>20 in der Add-Bedingung setze, werden viele Positionen eröffnet. Ich habe versucht, Sleep() hinzuzufügen - es hilft nicht. Was ist hier das Problem?
 

OrderModify error 1 tritt in der Regel auf, wenn die neuen Parameter genau mit denen im Auftrag übereinstimmen...

 
keekkenen >>:

обычно OrderModify error 1 бывает, когда новые параметры точно соответствуют тем, что в ордере..

Vielen Dank, keekkenen! Die Parameter sind unterschiedlich. Die Antwort finden Sie hier. Der Rat (im Thread) ist, diesen Fehler festzunageln...NormalizeDouble hilft auch nicht.

Und was können Sie über den zweiten Fehler (bei den Zusätzen) sagen?

 
Woher wissen die EAs, wie hoch der Papiergewinn, d. h. der Gewinn aus nicht geschlossenen Positionen, im Moment ist?
 
dmmikl86 писал(а) >>
Wie können Sie herausfinden, wie viel Papiergewinn, d. h. Gewinn aus nicht geschlossenen Positionen, sich derzeit im EA befindet?

KimIV verfügt über die Funktion GetProfitOpenPosInPoint().

 
khorosh >>:

У KimIV есть функция GetProfitOpenPosInPoint().

Kann ich es so machen, und wird es funktionieren?

extern double Level_Profit = 200;

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   double paper_money = AccountEquity()-AccountBalance();
   if ( paper_money > Level_Profit)
      {
       #include "scripts\s_close_all.mq4"
      }
//----
   return(0);
  }
//+------------------------------------------------------------------+

oder wäre es besser, den Skriptcode in den EA einzufügen?