¿Cómo codificar? - página 149

 

Problema de señal de no-lagzigzag

Hola kevin07

Las alertas de nonlagzigzag funcionan pero no se corresponden con una línea en zigzag. He recibido varias alertas pero la línea en zigzag no se ha pintado. Además, cuando cargo por primera vez el indicador da una alerta. ¿Puedes mirar el código y ver si puedes detectar el problema? La alerta por correo electrónico también funciona muy bien, gracias por incluirla. Cualquier cosa que puedas hacer será muy apreciada.

Un saludo, Tom

 

nonlagzigzag

Hola tk748, La alerta inicial que apareció cuando cargaste el indi indica la dirección actual del comercio desde el último máximo o mínimo más alto (que puede haber ocurrido varias velas atrás). Lamento que las alertas intermedias salgan antes de que se dibuje la siguiente línea. La sentencia IF para la alerta podría tener un filtro adicional para comprobar que CurrentDirection != PreviousDirection para que las alertas adicionales no salgan hasta que se dibuje la siguiente línea. (Estoy enfrascado en la finalización de mi EA y no puedo ocuparme de eso en este momento). Durante el día, tengo que trabajar. Durante la noche, tengo que dormir. Sin un EA, no conseguiré muchas (ninguna) operaciones. Mi prioridad es utilizar un zigzag o volitility indi como filtro para evitar que se abran algunas operaciones no rentables.

Si encuentro cómo añadir ese código adicional en el proceso, te lo haré saber.

Saludos, kevin07

 

Script de Straddle

Tengo este script pero me encantaría tener la opción de poner un temporizador para que opere la apertura de Londres... ¿qué tan difícil sería agregar esto y podrías indicarme la dirección correcta o mostrarme el código para hacerlo?

Como siempre... ¡Aprecio su ayuda!

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

}

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

 

alerta de nonlagzigzag

Hola kevin07

Gracias por el trabajo que hiciste en este indicador. Tal vez durante la codificación de su EA tendrá una idea acerca de cómo hacer que las señales aparecen en el momento adecuado. Mientras tanto, tal vez alguien más aquí tendrá tiempo para resolver el problema. Buena suerte con su EA.

Saludos,

Tom

 

Por favor, ayúdame a añadir el código matigale

Acabo de hacer este EA usando este sitio: Expert Advisor Builder para MetaTrader 4 basado en reglas simples para el comercio.

Puede probar este EA para ver el resultado. Por favor, establezca SL = 100, TP = 300, trailing stop = 70 y ejecútelo en EUR/USD H4.

¿Podría por favor ayudarme a poner martigale para el comercio de este sistema:

Utilice una cantidad para que 100 pips = 2% del saldo de la cuenta

Si se pierde la operación n-1, duplicar la cantidad de la operación n hasta cerrar la posición con beneficio.

¡Muchas gracias!

Archivos adjuntos:
 
vinafx:
Acabo de hacer este EA usando este sitio: Expert Advisor Builder para MetaTrader 4 basado en reglas simples para operar.

Puede probar este EA para ver el resultado. Por favor, establezca SL = 100, TP = 300 , trailing stop = 70 y ejecutarlo en EUR/USD H4.

¿Podría por favor ayudarme a poner martigale para el comercio de este sistema:

Utilice una cantidad para que 100 pips = 2% del saldo de la cuenta

Si se pierde la operación n-1, duplicar la cantidad de la operación n hasta cerrar la posición con beneficio.

¡Muchas gracias!

¡Merece la pena dedicar un poco de tiempo, amigos! Este es el resultado de operar sin código martigale. Depósito inicial: 10000; 1 lote por operación. SL = 100; TP = 300; Trailing ST: 70; EUR/USD H4.

Archivos adjuntos:
 

¿cómo se simplifica este código?

la diferencia entre a y b <= c entonces comercio = verdadero, sino falso..

hasta ahora esto es lo que he hecho si alguien puede mostrarme una forma más corta de codificar esto..

si ( a >= b)

{

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

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

}

si ( a < b)

{

si (b - a <= c ) trade = true

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

}

 

prueba esto (asumiendo que c es >= 0)

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

saludos

mladen

fercan:
¿cómo simplificar este código?

la diferencia entre a y b <= c entonces comercio = true, sino false..

hasta ahora esto es lo que he hecho si alguien puede mostrarme una forma más corta de codificar esto..

si ( a >= b)

{

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

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

}

si ( a < b)

{

si (b - a <= c ) trade = true

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

}
 
mladen:
prueba esto (estoy asumiendo que c es >= 0)
trade = (MathAbs(a-b) <= c);

saludos

mladen

Gracias... estaba buscando algo así antes... gracias...

 

prueba NonLagZigZag_Signal_v2 alertas

tk748:
Hola kevin07

Gracias ...Tal vez ...tengas una idea de cómo hacer que las señales aparezcan en el momento adecuado...

Saludos,

Tom

Hola Tom,

Pude volver a este ZigZag indi y filtrar las alertas intermedias. Estoy enviando esto inmediatamente y no lo he probado. Por favor, hazme saber si encuentras algún problema relacionado con las alertas.

Gracias

kevin07

Archivos adjuntos: