Come codificare? - pagina 149

 

Problema del segnale nonlagzigzag

Ciao kevin07,

Gli avvisi per il nonlagzigzag funzionano ma non corrispondono a una linea a zigzag. Ho ricevuto diversi avvisi ma la linea a zigzag non si è dipinta. Inoltre, quando carico per la prima volta l'indicatore dà un allarme. Puoi dare un'occhiata al codice e vedere se puoi individuare il problema? Anche l'avviso via e-mail funziona benissimo, grazie per averlo incluso. Qualsiasi cosa tu possa fare sarà molto apprezzata.

Cordiali saluti, Tom

 

nonlagzigzag

Ciao tk748, l'avviso iniziale che è apparso quando hai caricato l'indi indica la direzione attuale degli scambi dall'ultimo massimo o minimo più alto (che può aver avuto luogo diverse candele indietro). Mi dispiace sentire che gli avvisi intermedi escono prima che la linea successiva venga disegnata. L'istruzione IF per l'avviso potrebbe avere un filtro aggiuntivo per controllare che CurrentDirection != PreviousDirection in modo che gli avvisi aggiuntivi non appaiano fino a quando la linea successiva non viene disegnata. (Sono impegnato a finire il mio EA e non posso affrontarlo per te in questo momento). Durante il giorno, devo lavorare. Durante la notte, devo dormire. Senza un EA, non avrò molti (nessuno) trade. La mia priorità è quella di utilizzare uno zigzag o un indice di volatilità come filtro per evitare l'apertura di alcuni trade non redditizi.

Se trovo come aggiungere questo codice aggiuntivo nel processo, ti farò sapere.

Auguri, kevin07

 

Script Straddle

Ho questo script ma mi piacerebbe avere l'opzione di impostare un timer per fargli scambiare il London open... quanto sarebbe difficile aggiungerlo e potreste indicarmi la strada giusta o mostrarmi il codice per farlo?

Come sempre... Apprezzo il tuo aiuto!

#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);

}

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

 

allarme nonlagzigzag

Ciao kevin07,

Grazie per il lavoro che hai fatto su questo indicatore. Forse durante la codifica del tuo EA avrai un'idea su come far apparire i segnali al momento giusto. Nel frattempo forse qualcun altro qui avrà il tempo di risolvere il problema. Buona fortuna con il tuo EA.

Saluti,

Tom

 

Per favore aiutatemi ad aggiungere il codice matigale

Ho appena creato questo EA usando questo sito: Expert Advisor Builder per MetaTrader 4 basato su semplici regole di trading.

Puoi provare questo EA per vedere il risultato. Si prega di impostare SL = 100, TP = 300, trailing stop = 70 ed eseguirlo su EUR/USD H4.

Potresti gentilmente aiutarmi a mettere martigale per scambiare questo sistema:

Utilizzare un importo in modo che 100 pips = 2% del saldo del conto

Se il trade n-1 è perso, raddoppia l'importo del trade n fino a chiudere la posizione con profitto.

Grazie mille!

File:
 
vinafx:
Ho appena creato questo EA utilizzando questo sito: Expert Advisor Builder per MetaTrader 4 basato su semplici regole di trading.

Puoi provare questo EA per vedere il risultato. Si prega di impostare SL = 100, TP = 300, trailing stop = 70 ed eseguirlo su EUR/USD H4.

Potresti gentilmente aiutarmi a mettere martigale per scambiare questo sistema:

Utilizzare un importo in modo che 100 pips = 2% del saldo del conto

Se il trade n-1 è perso, raddoppia l'importo del trade n fino a chiudere la posizione con profitto.

Grazie mille!

Vale la pena di spendere un po' di tempo, amici! Questo è il risultato del trading senza codice martigale. Deposito iniziale: 10000; 1 lotto per operazione. SL = 100; TP = 300; Trailing ST: 70; EUR/USD H4.

File:
 

come semplificare questo codice?

la differenza tra a e b <= c allora trade = true, altrimenti false...

finora questo è quello che ho fatto se qualcuno può mostrarmi un modo più breve per codificare questo...

se ( a >= b)

{

se (a - b <= c) trade = true;

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

}

se ( a < b)

{

se (b - a <= c ) trade = true;

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

}

 

provate questo (presumo che c sia >= 0)

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

saluti

mladen

fercan:
come semplificare questo codice?

la differenza tra a e b <= c allora trade = true, altrimenti false...

finora questo è quello che ho fatto se qualcuno può mostrarmi un modo più breve per codificare questo...

se ( a >= b)

{

se (a - b <= c) trade = true;

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

}

se ( a < b)

{

se (b - a <= c ) trade = true;

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

}
 
mladen:
prova questo (sto assumendo che c sia >= 0)
trade = (MathAbs(a-b) <= c);

saluti

mladen

grazie... stavo cercando qualcosa di simile prima... grazie...

 

prova gli avvisi NonLagZigZag_Signal_v2

tk748:
Ciao kevin07,

Grazie...Forse...avrai un'idea su come far apparire i segnali al momento giusto...

Saluti,

Tom

Ciao Tom,

Sono riuscito a risalire a questo indi ZigZag e a filtrare gli avvisi intermedi. Lo sto inviando immediatamente e non l'ho testato. Per favore fammi sapere se trovi qualche problema relativo agli avvisi con esso.

Grazie

kevin07

Motivazione: