Inhalte aufrufen

  • Über Facebook anmelden Über Twitter anmelden Über WindowsLive anmelden Log In with Google Anmelden
  • Mitglied werden
Profilbild

Lotgrösse bestimmen

- - - - -

  • Du kannst leider keine neuen Themen eröffnen
  • Please log in to reply
7 Antworten zu diesem Thema

  #1
OFFLINE   halobungie

Hallo,

ich brauche mal wieder Hilfe:

 

folgender Code:

 

if(openPositions(Pair_S1,S1_Magic,S1_GridName)==0)
{  
Ticket = OrderSend(Pair_S1,OP_BUY, NewLot_S1 , NormalizeDouble(MarketInfo(Pair_S1,MODE_ASK),Digits), 3, 0, MarketInfo(Pair_S1,MODE_BID)+TakeProfit_S1*Point, S1_GridName, S1_Magic, NULL, Blue);
 
Ich versuche nun schon seit Tagen, die Variable "NewLot_S1" also die Lotgrösse so zu programmieren, dass, wenn ein Trade mit Gewinn geschlossen wird die Lotgrösse um 0.10 Lot erhöht wird.
Wie ihr seht ist in der Orderaufgabe nur ein TakeProfit enthalten. Geschlossen werden die Orders dann mit einer weiteren Close-Routine.
 
Mir geht es nur um die Bestimmung der Lotgrösse. Ich vermute ich muss auf die History-Daten zugreifen. Also wenn eine Order geschlossen wurde, muss der EA dort schauen wie hoch die Lotgrösse der gerade eben geschlossenen Order war und dementsprechend um 0.10 erhöhen. Aber wie gestalte ich die Programmierung dieser Variablen? Der Clou ist, dass nämlich immer nur eine Order offen ist.
 
Ich hoffe, dass mir jemand helfen kann.
Viele Grüsse,
halobungie
 


  #2
OFFLINE   traderdoc

Naja, entweder Du speicherst die Lotgröße direkt nach dem Senden der letzten Order ab oder Du liest halt aus der Historie die Lotgröße der letzten Order aus und dann ist

NewLot_S1 += 0.1

Deine neue Lotgröße.

traderdoc

Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierwünsche.

 


  #3
OFFLINE   halobungie

Hallo TraderDoc,

 

bei mir addiert der EA nichts. Die Lotgrösse bleibt immer bei 0.10

 

double NewLot_S3;
NewLot_S3 += 0.10;
 
//OPEN ORDERS
if(openPositions(Pair_S3,S3_Magic,S3_GridName)==0)
{  
Ticket_S3 = OrderSend(Pair_S3,OP_BUY, NewLot_S3 , NormalizeDouble(MarketInfo(Pair_S3,MODE_ASK),Digits), 3, 0, MarketInfo(Pair_S3,MODE_BID)+TakeProfit_S4*Point, S3_GridName, S3_Magic, NULL, Blue);
 
 
Was ist falsch?


  #4
OFFLINE   traderdoc

Die Variable NewLot_S3 muss entweder global oder zumindest in der zu benutzenden Funktion als static double NewLot_S3 deklariert werden.

Deklariere sie am Besten global, dann bist Du auf der "sicheren" Seite.

 

traderdoc


Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierwünsche.

 


  #5
OFFLINE   halobungie

Hallo TraderDoc,

das mit der Globalen Variable hat eine Verbesserung gebracht.

 

Wie müsste ich es programmieren, wenn er die letzte "getradete" Lotsgrösse multiplizieren soll? Also 1. Trader = 0.1, 2. Trader = 0.2, 3. Trader = 0.4 usw.

 

Ich habe nämlich Deine Lösung mit (+= 0.10) immer noch nicht kapiert... Was macht der EA eigentlich ganz genau mit diesem (+= 0.10)?

Bei der bisherigen Variante von Dir hat die Grösse des TakeProfit Auswirkung auf die Grösse der Lotzahl! Ist dies so gewollt? Je grösser der TakeProfit, desto grösser wird die nächste Lotgrösse.

 

 

Vorerst Vielen Dank!

halobungie


Bearbeitet von halobungie, 08 Juni 2017 - 19:31 Uhr,


  #6
OFFLINE   traderdoc

NewLot_S1 += 0.1

 

ist die verkürzte Form von:NewLot_S1 = NewLot_S1 + 0.1

 

D.h. wann immer der EA die Lotgröße um 0.1 vergrößern soll, müsste die o.g. Gleichung angewendet werden.

 

traderdoc


Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierwünsche.

 


  #7
OFFLINE   halobungie

Hallo TraderDoc,

diese Variante gibt mir zu extreme "grosse" Lotgrössen.

 

Du hast am Anfang noch von einer anderen Variante gesprochen:

"Du speicherst die Lotgröße direkt nach dem Senden"

 

Eventuell wäre dies die bessere Lösung für mich. Wie genau kann man die Lotgrösse nach dem Senden speichern?

 

Besten Dank für Deine Hilfe!

halobungie 



  #8
OFFLINE   traderdoc

Hallo TraderDoc,

diese Variante gibt mir zu extreme "grosse" Lotgrössen.

 

Du hast am Anfang noch von einer anderen Variante gesprochen:

"Du speicherst die Lotgröße direkt nach dem Senden"

 

Eventuell wäre dies die bessere Lösung für mich. Wie genau kann man die Lotgrösse nach dem Senden speichern?

 

Besten Dank für Deine Hilfe!

halobungie 

 

Ich hatte deshalb ja auch geschrieben: "...wann immer..."

 

In der Funktion zum Senden der Order steht doch die Funktion:

 

OrderSend(...)

 

Da überträgt man das Resultat des Sendens eh in eine Variable

 

int ticket = OrderSend(...);

 

und fragt den Erfolg ab:

 

if (ticket> 0) {

 //Hier abspeichern der benutzten Lotgröße

}

 

traderdoc


Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierwünsche.

 




Similar Topics

  Thema Eröffnet von Statistik Letzter Beitrag




0 Benutzer lesen gerade dieses Thema

0 Mitglieder, 0 Gäste, 0 anonyme Nutzer