Wie programmiert man? - Seite 149

 

Problem mit dem Nonlagzigzag-Signal

Hallo kevin07,

Die Warnungen für Nonlagzigzag funktionieren, aber sie korrespondieren nicht mit einer Zickzacklinie. Ich habe mehrere Warnungen erhalten, aber die Zickzack-Linie hat sich nicht gezeichnet. Wenn ich den Indikator zum ersten Mal lade, gibt er außerdem eine Warnung aus. Können Sie sich den Code ansehen und sehen, ob Sie das Problem erkennen können? Die E-Mail-Benachrichtigung funktioniert ebenfalls gut, vielen Dank für die Einbindung. Alles, was Sie tun können, wird von uns sehr geschätzt.

Mit freundlichen Grüßen, Tom

 

nonlagzigzag

Hallo tk748, die anfängliche Warnung, die beim Laden des indi erschien, gibt die aktuelle Handelsrichtung seit dem letzten Höchst- oder Tiefststand an (der mehrere Kerzen zurückliegen kann). Es tut mir leid zu hören, dass Zwischenwarnungen ausgegeben werden, bevor die nächste Linie gezogen wird. Die IF-Anweisung für den Alarm könnte einen zusätzlichen Filter enthalten, um zu prüfen, ob CurrentDirection != PreviousDirection, so dass zusätzliche Alarme nicht erscheinen, bis die nächste Linie gezeichnet ist. (Ich bin mit der Fertigstellung meines EA beschäftigt und kann das im Moment nicht für Sie erledigen). Tagsüber muss ich arbeiten. In der Nacht muss ich schlafen. Ohne einen EA werde ich nicht viele (irgendwelche) Trades machen können. Meine Priorität ist es, einen Zigzag- oder Volatilitätsindex als Filter zu verwenden, um zu verhindern, dass einige unrentable Trades eröffnet werden.

Wenn ich herausfinde, wie ich diesen zusätzlichen Code in den Prozess einfügen kann, werde ich es Sie wissen lassen.

Beste Wünsche, kevin07

 

Straddle-Skript

Ich habe dieses Skript, aber würde gerne die Möglichkeit haben, einen Timer zu setzen, um den Handel in London zu öffnen... wie schwer wäre es, dies hinzuzufügen und könnten Sie mich in die richtige Richtung weisen oder mir den Code zeigen, um es zu tun?

Wie immer... Ich schätze Ihre Hilfe!!

#include

#include

#define LOOK_TO_BUY 1

#define LOOK_TO_SELL 2

extern int Magic_Number = 412625; // set this to a unique number if you intend to use the script simulataneously across many charts on the same account.

extern int UserDefinedSpread = 0; // set this to 0 if you want to use market spread. valid value is >= 0

extern double LotSize = 0.1;

extern int Slippage = 3;

extern int StopLoss = 25; // If you set StopLoss to 0, no stop loss level will be placed.

extern int TakeProfit = 0; // If you set TakeProfit to 0, no stop loss level will be placed.

extern bool OneCancelsOther = true; // This determines if you want the script to stay running and track, then delete the opposite pending order when an order has executed.

extern int NumOfCandles = 3; // This determines how many previous candles you want the EA to look for the High Lows. (buy and sell prices). valid value is > 0

extern int PositionalMarginPips = 40; // The distance excluding spread from the high lows for the opening prices. valid value is >= 0

extern int intervalseconds = 1.0; //The time interval for the script to check your trades. allows fractional seconds.

double BuyPrice = 0;

double SellPrice = 0;

int CustomSpread = 0;

bool KeepRunning = true;

int ticketToDelete = 0;

void GetPrices()

{

double HighestHigh = High[1];

if (NumOfCandles > 1)

{

for (int i=2; i<=NumOfCandles; i++)

{

if (High > HighestHigh)

{

HighestHigh = High;

}

}

}

BuyPrice = HighestHigh + (PositionalMarginPips * Point);

BuyPrice = NormalizeDouble(BuyPrice,Digits);

double LowestLow = Low[1];

if (NumOfCandles > 1)

{

for (i=2; i<=NumOfCandles; i++)

{

if (Low < LowestLow)

{

LowestLow = Low;

}

}

}

SellPrice = LowestLow - (PositionalMarginPips * Point);

BuyPrice = NormalizeDouble(BuyPrice,Digits);

}

void PlaceTrades()

{

double TakeProfitPrice, StopLossPrice;

if (TakeProfit==0)

{

TakeProfitPrice = 0;

}

else

{

TakeProfitPrice = BuyPrice + (TakeProfit * Point);

TakeProfitPrice = NormalizeDouble(TakeProfitPrice,Digits);

}

if (StopLoss == 0)

{

StopLossPrice = 0;

}

else

{

StopLossPrice = BuyPrice - (StopLoss * Point);

StopLossPrice = NormalizeDouble(StopLossPrice,Digits);

}

SendOrders (LOOK_TO_BUY, LotSize, BuyPrice, Slippage, StopLossPrice, TakeProfitPrice, "Straddle Buy", 0);

if (TakeProfit==0)

{

TakeProfitPrice = 0;

}

else

{

TakeProfitPrice = SellPrice - (TakeProfit * Point);

TakeProfitPrice = NormalizeDouble(TakeProfitPrice,Digits);

}

if (StopLoss == 0)

{

StopLossPrice = 0;

}

else

{

StopLossPrice = SellPrice + (StopLoss * Point);

StopLossPrice = NormalizeDouble(StopLossPrice,Digits);

}

SendOrders (LOOK_TO_SELL, LotSize, SellPrice, Slippage, StopLossPrice, TakeProfitPrice, "Straddle Sell", 0);

}

void SendOrders (int BuyOrSell, double LotSize, double PriceToOpen, double Slippage, double SL_Price, double TP_Price, string comments, datetime ExpirationTime)

{

int PositionType, ticket, errorType;

if (BuyOrSell == LOOK_TO_BUY)

{

if (PriceToOpen > Ask)

{

PositionType = OP_BUYSTOP;

}

if (PriceToOpen < Ask)

{

PositionType = OP_BUYLIMIT;

}

Print("Bid: "+Bid+" Ask: "+Ask+" | Opening Buy Order: "+Symbol()+", "+PositionType+", "+LotSize+", "+PriceToOpen+", "+Slippage+", "+SL_Price+", "+TP_Price+", "+comments+", "+Magic_Number+", "+ExpirationTime+", Green");

ticket=OrderSend(Symbol(),PositionType,LotSize,PriceToOpen,Slippage,SL_Price,TP_Price,comments,Magic_Number,ExpirationTime,CLR_NONE);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

{

Print("BUY order opened : ",OrderOpenPrice());

}

}

else

{

errorType = GetLastError();

Print("Error opening BUY order : ", ErrorDescription(errorType));

}

}

if (BuyOrSell == LOOK_TO_SELL)

{

if (PriceToOpen < Bid)

{

PositionType = OP_SELLSTOP;

}

if (PriceToOpen > Bid)

{

PositionType = OP_SELLLIMIT;

}

Print("Bid: "+Bid+" Ask: "+Ask+" | Opening Sell Order: "+Symbol()+", "+PositionType+", "+LotSize+", "+PriceToOpen+", "+Slippage+", "+SL_Price+", "+TP_Price+", "+comments+", "+Magic_Number+", "+ExpirationTime+", Red");

ticket=OrderSend(Symbol(),PositionType,LotSize,PriceToOpen,Slippage,SL_Price,TP_Price,comments,Magic_Number,ExpirationTime,CLR_NONE);

if(ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

{

Print("Sell order opened : ",OrderOpenPrice());

}

}

else

{

errorType = GetLastError();

Print("Error opening SELL order : ", ErrorDescription(errorType));

}

}

}

void GetSpread()

{

if (UserDefinedSpread <= 0)

{

CustomSpread = MarketInfo(Symbol(),MODE_SPREAD);

}

else

{

CustomSpread = UserDefinedSpread;

}

}

int GetNumberOfPending()

{

int count = 0;

int total = OrdersTotal();

if (total > 0)

{

for(int cnt=0;cnt<total;cnt++)

{

if(OrderSelect(cnt,SELECT_BY_POS))

{

if(OrderSymbol()==Symbol() && OrderMagicNumber() == Magic_Number)

{

if(OrderType() != OP_BUY && OrderType() != OP_SELL)

{

ticketToDelete = OrderTicket();

count++;

}

}

}

}

}

return (count);

}

void ManageTrades()

{

// If there's only one pending trade left, assume the other one is opened.

// So Delete this one.

if (GetNumberOfPending() == 1)

{

if (OrderDelete(ticketToDelete))

{

KeepRunning = false;

Alert ("Straddle script has ended");

}

}

}

//+------------------------------------------------------------------+

//| script program start function |

//+------------------------------------------------------------------+

int start()

{

//----

GetSpread();

GetPrices();

PlaceTrades();

Alert ("Pending Trades Placed. Please Wait...");

int intervalMilliseconds = intervalseconds * 1000;

while (KeepRunning && OneCancelsOther)

{

Sleep(intervalMilliseconds);

ManageTrades();

}

//----

return(0);

}

//+------------------------------------------------------------------+

 

nonlagzigzag-Alarm

Hallo kevin07,

vielen Dank für die Arbeit, die du an diesem Indikator geleistet hast. Vielleicht hast du bei der Programmierung deines EA eine Idee, wie du die Signale zur richtigen Zeit erscheinen lassen kannst. In der Zwischenzeit hat vielleicht jemand anderes hier Zeit, das Problem zu lösen. Viel Glück mit Ihrem EA.

Mit freundlichen Grüßen,

Tom

 

Bitte helfen Sie mir, matigale Code hinzufügen

Ich habe gerade mde diese EA mit dieser Website: Expert Advisor Builder für MetaTrader 4 auf der Grundlage einfacher Regeln zu handeln.

Sie können diesen EA ausprobieren, um das Ergebnis zu sehen. Bitte setzen Sie SL = 100, TP = 300, Trailing Stop = 70 und lassen Sie ihn auf EUR/USD H4 laufen.

Würden Sie bitte helfen Sie mir martigale setzen, um dieses System zu handeln:

Verwenden Sie einen Betrag, so dass 100 Pips = 2% des Kontostandes

Wenn der Handel n-1 verloren geht, verdoppeln Sie den Betrag von Handel n bis zur Schließung der Position mit Gewinn.

Ich danke Ihnen vielmals!

Dateien:
 
vinafx:
Ich habe gerade mde diese EA mit dieser Website: Expert Advisor Builder für MetaTrader 4 auf der Grundlage einfacher Regeln zu handeln.

Sie können diesen EA ausprobieren, um das Ergebnis zu sehen. Bitte setzen Sie SL = 100, TP = 300, Trailing Stop = 70 und führen Sie es auf EUR/USD H4.

Würden Sie mir bitte helfen, martigale setzen, um dieses System zu handeln:

Verwenden Sie einen Betrag, so dass 100 Pips = 2% des Kontostandes

Wenn der Handel n-1 verloren geht, verdoppeln Sie den Betrag von Handel n, bis Sie die Position mit Gewinn schließen.

Ich danke Ihnen vielmals!

Es lohnt sich, ein wenig Zeit zu verbringen, Freunde! Dies ist das Ergebnis des Handels ohne martigale Code. Ersteinlage: 10000; 1 Lot pro Handel. SL = 100; TP = 300; Trailing ST: 70; EUR/USD H4.

Dateien:
 

Wie kann man diesen Code vereinfachen?

die Differenz zwischen a und b <= c dann trade = true, sonst false..

bis jetzt habe ich folgendes gemacht, wenn mir jemand einen kürzeren Weg zeigen kann, dies zu codieren...

if ( a >= b)

{

wenn (a - b <= c ) Handel = wahr;

wenn (a - b > c) trade = false;

}

if ( a < b)

{

wenn (b - a <= c ) Handel = wahr;

wenn (b - a > c) Handel = falsch;

}

 

Versuchen Sie dies (ich gehe davon aus, dass c >= 0 ist)

trade = (MathAbs(a-b) <= c);

Mit freundlichen Grüßen

mladen

fercan:
Wie lässt sich dieser Code vereinfachen?

die Differenz zwischen a und b <= c dann trade = true, sonst false..

bis jetzt habe ich das so gemacht, falls mir jemand einen kürzeren Weg zeigen kann, dies zu codieren.

if ( a >= b)

{

wenn (a - b <= c ) Handel = wahr;

wenn (a - b > c) trade = false;

}

if ( a < b)

{

wenn (b - a <= c ) Handel = wahr;

wenn (b - a > c) Handel = false;

}
 
mladen:
versuchen Sie dies (ich gehe davon aus, dass c >= 0 ist)
trade = (MathAbs(a-b) <= c);

Grüße

mladen

vielen Dank. Ich habe schon früher nach so etwas gesucht. Danke.

 

NonLagZigZag_Signal_v2 Alarme testen

tk748:
Hallo kevin07,

Danke ...Vielleicht ... haben Sie eine Idee, wie man die Signale zum richtigen Zeitpunkt erscheinen lassen kann...

Mit freundlichen Grüßen,

Tom

Hallo Tom,

ich konnte auf dieses ZigZag indi zurückgreifen und Zwischenwarnungen herausfiltern. Ich sende dies sofort und habe es nicht getestet. Bitte lassen Sie es mich wissen, wenn Sie irgendwelche Probleme mit den Alarmen finden.

Danke

kevin07