Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 375

 
okidoki543:
Wenn mir jemand helfen möchte (siehe oben), bin ich für eine Zusammenarbeit offen.
Auf kommerzieller Basis ist das kein Problem, es wird eine Schlange von Leuten geben, die helfen wollen. Ansonsten... Fangen Sie selbst an zu schreiben, und die Hilfe wird kommen.
 
Ekburg:

OrderStopLoss() anstelle von sl einsetzen


hat nicht funktioniert...

void VirtualTral(int Dist_Tral,int Start_Tral,int Magic,int SL)
{

double dist=Dist_Tral;
double start=Start_Tral;
double priceopen=OrderOpenPrice();
double sl=OrderStopLoss();
 
if(OrdersTotal()<=0)
ObjectDelete("Stop"); 

int i, k=OrdersTotal();

  for (i=k-1; i>=0; i--) 
   {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
     {  

       if ((NormalizeDouble(priceopen+start*Point,Digits)<=Bid)&&(NormalizeDouble(Bid-sl*Point,Digits)>NormalizeDouble(dist*Point,Digits)))
         {                    
                sl=NormalizeDouble(Bid-dist*Point,Digits);
                Print(+sl);
                ObjectCreate("Stop",OBJ_HLINE,0,D'2013.02.20 12:30',sl);                                                         
                ObjectSet("Stop",OBJPROP_STYLE,1);                                                                                         
                ObjectMove("Stop",0,D'2013.02.20 12:30',sl);                                                                                                 
                if (NormalizeDouble(sl*Point,Digits) >=Bid)
             {
                Print("Закрываем");
                OrderClose(OrderTicket(),OrderLots(),Bid,50,Blue);
             }
         }               
      }
   }
}

Es scheint zu funktionieren, aber irgendetwas ist nicht berücksichtigt...

 
alexey1979621:
Ja, jetzt tut es das, aber es öffnet eine ganze Reihe von Geschäften, und ich brauche nur zwei Geschäfte für bestimmte Paare zu öffnen, sagen wir für EURAUD und AUDUSD.

Der Algorithmus ist einfacher als ein Filz-Baum:

1. Wenn keine Positionen auf dem EuroAudi vorhanden sind, eröffnen Sie eine Position,

2. Wenn es keine Position auf AudiBucks gibt - eröffnen Sie eine Position.

 
vadynik:


Es hat nicht funktioniert...

sollte eigentlich funktionieren, aber irgendetwas ist da nicht berücksichtigt...

Sollte die Preiseröffnung nicht bereits in der Schleife erfolgen, nachdem der Auftrag ausgewählt wurde?
 
artmedia70:

Der Algorithmus ist einfacher als ein Filz-Baum:

1. Wenn keine Positionen auf dem EuroAudi vorhanden sind, eröffnen Sie eine Position,

2. Wenn es keine Position auf AudiBucks gibt - eröffnen Sie eine Position.


Nein, Artemis, so funktioniert das in meiner Situation nicht.
extern double lotAU=1.3;
extern double lotEA=1.0;
extern double Profit=30;
extern int Operation=0;
extern string Сomment           = "KVAZ";
extern int Magic                = 1111;


//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {

double prof;
double bidEA = MarketInfo("EURAUD",MODE_BID);
double askEA = MarketInfo("EURAUD",MODE_ASK);
double bidAU = MarketInfo("AUDUSD",MODE_BID);
double askAU = MarketInfo("AUDUSD",MODE_ASK);

string symEA = "EURAUD";
string symAU = "AUDUSD";

for(int i=OrdersTotal()-1; i>=0; i--)
{
 OrderSelect(i,SELECT_BY_POS);
 prof=prof+OrderProfit();
 Print("Profit="+prof);
}
if(prof>=Profit)
{
 for(i=OrdersTotal()-1; i>=0; i--)
 {
  OrderSelect(i,SELECT_BY_POS);
  {
  if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
  OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),5,0);
  }
 }
}

 if(Operation==0)
 {
  OrderSend(symEA,OP_BUY,lotEA,askEA,3,0,0,"KVAZ",Magic,0,Blue);
  OrderSend(symAU,OP_BUY,lotAU,askAU,3,0,0,"KVAZ",Magic,0,Blue); 
 }
 if(Operation==1)
 {
  OrderSend(symEA,OP_SELL,lotEA,bidEA,3,0,0,"KVAZ",Magic,0,Red);
  OrderSend(symAU,OP_SELL,lotAU,bidAU,3,0,0,"KVAZ",Magic,0,Red);
 }
 
   return(0);
  }
 
alexey1979621:
Nein, Artemida, das funktioniert in meiner Situation nicht.


In der Schleife werden die Positionen je nach Symbol und Magier neu berechnet.

Und was ist das: OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),5,0);


P.S.: Artemida nicht Artemida a

Kunstmedien

 
evillive:


In der Schleife werden die Positionen je nach Symbol und Magier neu berechnet.

Und was ist das: OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),5,0);


P.S.: Artemida ist nicht Artemida a

Kunstmedien


Komm schon, ich bin es gewohnt, dass man mich beschimpft... was auch immer ...

Eigentlich hat der Schlusskurs in dieser Funktion immer gut funktioniert. Der Compiler würde den erforderlichen Preis von selbst einfügen. Bei jemandem hier hat dies kürzlich einen Fehler verursacht.

 
artmedia70:

Komm schon, ich bin es gewohnt, dass man mich beschimpft... was auch immer...

Zeit, Ihren Spitznamen zu ändern?
 
alexey1979621:
Nein, Artemis, so funktioniert das in meiner Situation nicht.


Ja, nun... In Ihrer Situation, wenn sie so schief ist, funktionieren normale Vorschläge nicht wirklich...
 
Zhunko:
Zeit, Ihren Spitznamen zu ändern?

Dieser Spitzname ist 300 Jahre alt... Sie ist mir ans Herz gewachsen.