[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 369

 
Farbe MA Orlova.
 
Dankeschön
 

Ich habe immer noch Schwierigkeiten, die Handelsfunktionen zu verstehen, aber ich kenne mich ein wenig mit der Programmierung aus.

es wäre gut für mich, diese Art von Algorithmus mit Ihrer Hilfe zu implementieren:

wenn (Kaufbedingung)

wenn es einen offenen Auftrag gibt

wenn dieser Auftrag für das Paar gilt, bei dem die Kaufbedingung ausgelöst wurde

wenn es sich um einen Verkaufsauftrag handelt

schließen

einen Kaufauftrag eröffnen.

Hilf mir beim Schreiben, ich werde müde. Ich habe viel gelesen, aber ich verstehe es noch nicht.

 
frxmax:

Ich habe immer noch Schwierigkeiten, die Handelsfunktionen zu verstehen, aber ich weiß ein wenig über Programmierung.

Es wäre gut für mich, diese Art von Algorithmus mit Ihrer Hilfe zu implementieren:

1. wenn (Kaufbedingung)

2. wenn es einen offenen Auftrag gibt

2.1. wenn dieser Auftrag das Paar betrifft, bei dem die Kaufbedingung ausgelöst wurde

2.2. wenn es sich um einen Verkaufsauftrag handelt

3. schließen Sie es

4. Eröffnen Sie einen Kaufauftrag.

Ich habe viel gelesen, aber ich kann es immer noch nicht verstehen.


1. Was ist die Voraussetzung für den Kauf?

2. Wir machen eine Schleife durch Marktaufträge des Terminals

2.1 In der Schleife (Punkt 2) prüfen wir, für welches Paar der ausgewählte Auftrag offen ist, und wenn es das richtige ist, dann ...

2.2. Überprüfen Sie die Art des ausgewählten Auftrags und ob es sich um "Verkaufen" handelt ...

3. Den ausgewählten Auftrag schließen

Kaufauftrag eröffnen

Oder benötigen Sie den Code vollständig? Dies ist keine Hilfe, sondern eine bärische Gunst. Aber... Wenn es nicht funktioniert - ich werde schreiben, aber kein Problem...

 

Ja, ich habe geschrieben und geholfen. und "jeder hat seine eigene Wahrheit" in dieser Angelegenheit.

hier ist meine Version

if (LoCurent>LoPrevious && FtCurent>FtPrevious)
      {
       ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Bid-StopLoss*Point,Bid+TakeProfit*Point,"Buy",1111,0,Green);
       if(ticket>0)
          {
           if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
          }
         else Print("Error opening BUY order : ",GetLastError()); 
         return(0); 
      }
// условие ПРОДАЖИ 
   if(LoCurent<LoPrevious && FtCurent<FtPrevious)
       {
        ticket=OrderSend(Symbol(),OP_SELL,Lot,Bid,3,Ask+StopLoss*Point,Ask-TakeProfit*Point,"Sell",2222,0,Red);
        if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
           }
        else Print("Error opening SELL order : ",GetLastError()); 
        return(0); 
        }    
    return(0);
 // ЗАКРЫТИЕ СДЕЛОК
 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
           {
           if(LoCurent<LoPrevious || FtCurent<FtPrevious || LoCurent<-30 || LoPrevious<-30)
               {
                 OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
                 return(0); // exit
               }
           }else
               {
                 if(LoCurent>LoPrevious || FtCurent>FtPrevious || LoCurent>30 || LoPrevious>30)
                  {
                     OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position
                     return(0); // exit
                  }
                }
     }
        
     
 }
 

}

Hier ist die Version von KONDOR

if(LoCurent<LoPrevious)
     if(CalculateOrders(Symbol(),OP_SELL)>0) Ord_Close(Symbol(),OP_SELL);
     if(total<1)
     Ticket(OP_BUY);          }

//-----------------------
int CalculateOrders(string simbol,int type)
  {
   int count=0;
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==simbol)
        {
         if(OrderType()==type)  count++;
        
        }
     }
     
 return(count);
  }

//---------------------

void Ord_Close(string simb,int type) {  double price;
   
   if(type==OP_BUY)  price=MarketInfo(simb, MODE_BID); else
   if(type==OP_SELL) price=MarketInfo(simb, MODE_ASK);

   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;
      if( OrderSymbol()!=simb || OrderMagicNumber()!=111) continue;
      //---- check order type 
      if(OrderType()==type)
        {  OrderClose(OrderTicket(),OrderLots(),price,3,White);   break;  }
        
        
     }   
     
     
 } 
//-----------------------------

int Ticket(int op){
      double pp = MarketInfo(Symbol(), MODE_POINT);
      double pBid = MarketInfo(Symbol(), MODE_BID);
      double pAsk = MarketInfo(Symbol(), MODE_ASK); 
      double open_price;
      double T;
      color col=NULL;
      int mn=0;
      
  if(op==0) {open_price=pAsk; col=Blue; T=pAsk+TakeProfit*pp;}
  if(op==1) {open_price=pBid; col=Red;  T=pBid-TakeProfit*pp;}
  int res=OrderSend(Symbol(),op,Lot,open_price,1,Bid-StopLoss*Point,Bid+TakeProfit*Point,NULL,mn,0,col); 

   return(res);               
 }
 

Der Expert Advisor eröffnet weiterhin bei jeder Preisänderung einen Handel, wenn die Bedingung für die Eröffnung eines Auftrags erfüllt ist.

Es gibt auch ein Problem mit Schließungsaufträgen bei einem umgekehrten Signal (Deckung eines Kaufauftrags, wenn ein Verkaufssignal empfangen wird und umgekehrt).

 
frxmax:

Der EA eröffnet weiterhin bei jeder Preisänderung Trades, wenn die Ordereröffnungsbedingung erfüllt ist.

Ein weiteres Problem ist die Schließung von Aufträgen bei einem umgekehrten Signal (Deckung eines Kaufauftrags, wenn ein Verkaufssignal vorliegt und umgekehrt).

Dies ist eine weitere Möglichkeit. Schreiben Sie eine ToR (wie von Sergeev und Composter gefordert). Und dann erhalten Sie einen funktionierenden Code. In der Tat gibt es eine Lösung für alle Probleme. Und mehr als einmal wurde in diesem Forum gepostet.
 

Hallo zusammen. Ich habe von Forex gehört, bin aber nicht ins Detail gegangen, ich kenne die Grundlagen der C-Programmierung.

Ich möchte lernen, wie man Forex-Roboter programmiert, die Einkommen generieren.

Ist es wirklich schwer? Kann man damit Geld verdienen? Was ist die Mindestvoraussetzung für den Einstieg? Was muss ich lernen?

 
Vinin:

Es gibt noch eine andere Möglichkeit, dies zu tun. Schreiben Sie die ToR (wie von Sergeev und Composter gefordert). Und dann erhalten Sie einen funktionierenden Code. In der Tat gibt es eine Lösung für alle Probleme. Und mehr als einmal im Forum dargelegt.
Verstehe ichdie ToR für die Aufgabe richtig?
 
frxmax:

1. Der Advisor eröffnet weiterhin bei jeder Preisänderung einen Handel, wenn die Bedingung für die Eröffnung eines Auftrags erfüllt ist.

2. Ein weiteres Problem ist die Schließung von Aufträgen bei einem umgekehrten Signal (Deckung eines Kaufauftrags, wenn ein Verkaufssignal vorliegt und umgekehrt).

Voraussetzung:

1. Wenn es eine Bedingung für die Eröffnung eines Auftrags (Kauf) gibt; Wenn es keinen offenen Auftrag (Kauf) gibt, eröffnen Sie einen Kaufauftrag. Ähnliches gilt für Verkaufen

2. Wenn es eine Bedingung für die Eröffnung eines Kaufauftrags gibt, wenn es einen offenen Verkaufsauftrag gibt - schließen Sie den Verkaufsauftrag.

So erhalten wir:

1. Wenn ein Signal zur Eröffnung eines Kaufauftrags ->> vorliegt

2. Wenn es einen offenen Verkaufsauftrag gibt ->>.
2.1 Schließen Sie es.

3. wenn kein offener Kaufauftrag vorhanden ist ->> 3.
3.1 Öffnen Sie es.

Ähnliches gilt für Verkaufen