Jump to content
Tom Next - Daytrading Community

Recommended Posts

Posted

Wie lautet der Befehl, um den aktuellen Kontostand abzufragen?

Wenn es geht ohne diese ATM-Geschichte, das ist mir zu umständlich und fehleranfällig.

 

Es muss doch irgendeinen Befehl geben...meinetwegen reicht mir auch Profit/Lost der Strategie, hauptsache ich kriege das in eine Variable zum weiterverarbeiten...

Ich finde aber nix.

 

Danke!! :tongue:

Posted (edited)
Wie lautet der Befehl, um den aktuellen Kontostand abzufragen?

Wenn es geht ohne diese ATM-Geschichte, das ist mir zu umständlich und fehleranfällig.

 

Es muss doch irgendeinen Befehl geben...meinetwegen reicht mir auch Profit/Lost der Strategie, hauptsache ich kriege das in eine Variable zum weiterverarbeiten...

Ich finde aber nix.

 

 

Ich hab leider schon lange nichts mehr mit Ninjatrader gemacht, aber auf die schnelle hab ich das gefunden. Da gibts auch ein sample .cs file dazu. Aber scheinbar gibt es wirklich keinen einfachen Zugriff auf den aktuellen Kontostand.

 

Ninjatrader Support Forum Thread

 

Und grad noch was entdeckt, es scheint ab NT7 wohl doch was neues in dieser Richtung zu geben. Allerdings scheinbar noch ohne Dokumentation der Funktion.

 

For Cash Value: GetAccountValue(AccountItem.CashValue)

For Realized PnL: GetAccountValue(AccountItem.RealizedProfitLoss)

Edited by Tommyknocker
Posted

Oh, vielen Dank, das hilft mir schon sehr weiter! :tongue: Das werde ich heuet abend gleich ausprobieren.

 

Wo hast du denn das mit dem frischen NT7-Code gefunden? In dem NT7-Beta-Unterforum von Ninjatrader?

 

Ich schau ja immer in dieser großen PDF-Datei, wo alles, inkl. der Codebefehle für NT 6.5 beschrieben ist, das funzt ja meistens auch für NT7.

Posted

Funktioniert super :tongue:

 

Habs kombiniert mit der E-Mailfunktion:

#region Variables
private bool sendeMail = false;	//Für die Parametereinstellungen
bool sendemailcode = false;		//Für interne Berechnung ob Mail schon gesendet worden ist


protected override void OnBarUpdate()
// [...] Code bla bla ggf TimeFrameKürzel



if (SendeMail && sendemailcode)  //Wenn E-Mail in den Parametern aktiviert und interne E-Mail-Variable auf "true" gesetzt ist
{
SendMail("absender@email.com", "empfänger@email.com", "(Betreff) Strategie Update",
	( "Cash Value   = " + GetAccountValue(AccountItem.CashValue) + "\nRealized PuL = " + GetAccountValue(AccountItem.RealizedProfitLoss)));  

	sendemailcode = false;  //Setzt die interne Variable wieder auf falsch damit nicht ununterbrochen Mails gesendet werden
}


//Irgendwo im Code, was nur selten aufgerufen wird, muss nun... 
sendemailcode = true;
//...gesetzt werden. z.B. bei ""EnterLong" oder auch in einem eigenen Timeframe welches stündlich aufgerufen wird, 
// so wird die E-Mail immer dann geschickt wann man es möchte (nach EnterLong oder alle Stunde)

#region Properties
[Description("Sendet eine E-Mail in einem Intervall")]
[Category("\tE-Mail")]   //Eröffnet in den Parametern ganz oben ein eigenes E-Mail-Feld, damit das "true" oder "false" nicht die zu optimierenden Parameter stört 
public bool SendeMail
{
 get { return sendeMail; }
 set { sendeMail = value; }
}

 

 

Irgendwo im Code setzt man jetzt "sendemailcode = true;", und dann sendet er eine Mail mit dem Inhalt: Accountgröße und realisierter Profit und Verlust. Dieses Codekürzel irgendwohin setzen, wo es nur ab und zu aufgerufen wird, sonst droht eine E-Mail-Flut.

Das Ganze ist über die Parameter (de)aktivierbar.

Posted
Wo hast du denn das mit dem frischen NT7-Code gefunden? In dem NT7-Beta-Unterforum von Ninjatrader?

 

Ja, ich hab einfach das ganze NT Forum nach balance und total profitloss gesucht und bin dann recht rasch auf einen Forumseintrag gestoßen.

  • 1 year later...
Posted

Eine Möglichkeit wäre es den Code in OnPositionUpdate zu positionieren.

Diese Methode wird von NT bei jedem Positionswechsel LONG/SHORT -> FLAT, FLAT -> LONG/SHORT aufgerufen:

 

/// <summary>
/// Wird nach jedem Positionswechsel aufgerufen. 
/// <summary>
protected override void OnPositionUpdate(IPosition position)
{
Print("OnPositionUpdate ... Position = " +position.MarketPosition);

if (position.MarketPosition == MarketPosition.Flat)
{
        // Sende Email ...
}
else if (position.MarketPosition == MarketPosition.Long)
{	
        // ...	
}
else if (position.MarketPosition == MarketPosition.Short)
{
	// ...
}	
}

 

Beste Grüße

DT

  • Upvote 1

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...