Gogetter EA - página 2

 
Maji:
La verdad es que no estoy seguro de poder ayudarte en eso. Primero porque tengo que dedicar tiempo a hacerlo, y eso está ahora mismo en un aprieto para mí. Segundo porque hasta ahora he dejado que los "indicadores" hagan todos los dibujos y nunca he utilizado EAs para hacerlo. Es posible y creo que la teoría es la misma.

Creo que Codersguru había escrito un capítulo sobre el dibujo de líneas, flechas, etc. Intenta leerlo

De nuevo, copiar y pegar sigue siendo necesario que entiendas lo que estás haciendo. No hay nada como la autoayuda y tú lo estás demostrando muy bien. Sigue trabajando duro.

ok, me has pillado, aceptaré algo de crédito por el trabajo duro. ¡¡TGIF!! He sido un obseso con esto. Me merezco un descanso.

La cosa con el dibujo usando indicadores...realmente no me importa COMO se logra (hasta cierto punto) solo que SE logre...Si se puede hacer un indicador que ponga flechas en el gráfico para las aperturas y cierres supongo que eso funcionaría también...encuentro que mi cuenta real dibuja todo en el tester por si solo sin que yo le diga que haga nada...mi cuenta demo por otro lado ...tiene problemas

Me preocupa más la sincronización de las operaciones múltiples...¿mejora eso si uso el 'modo tick'? He estado viendo esto en la prueba de avance y hace una operación por barra, que puede poner las operaciones bastante lejos de pip sabio después de la señal. Si voy a abrir 5 posiciones en una señal, quiero que sea en la señal y no en media hora después de la señal ... (rolleyes)

 

Construir 1.01 -longitudes

Esto tiene una señal que he trabajado un poco que funciona. Ahora hay algunas diferencias con el gogetshorts con los promedios móviles utilizados y algunos de la lógica de la señal ... Saqué la señal de la gogetter original que estaba trabajando en longs y jugó con él un poco más.

A este le gusta más el GPB/USD 5mTF. Es más o menos se bloquea en los otros marcos de tiempo.

Disfrute, por favor, publique sus resultados / problemas, etc.

Archivos adjuntos:
 
eric79:
Hola, felicidades por la curva tan bonita. Creo que una cosa que se podría mejorar es la calidad del modelado de la prueba. Un 90% sería mejor.

Me acerco mucho a eso en los GGs 2.11

No estoy acostumbrado a usar los números de versión y construcción... siendo esta mi primera aventura... Eso fue añadido por Graham del foro de factoid... es una cosa más para seguir la pista de....estos deben tener la construcción actual y los números de versión en la ventana de la carta ahora... misma lógica y el código sólo mejor cosméticos.

Estoy dejando que ambos se ejecutan en la prueba de avance en la demo mientras trabajamos en las mejoras.

Archivos adjuntos:
 

Todavía me gustaría desarrollar señales de entrada y parámetros adicionales dentro de estos...

 

Me parece realmente extraño cuando algo funciona un día y no funciona al siguiente y no he hecho ningún cambio que pueda ver...

mi EA en el probador de estrategias ahora NO responde cuando cambio la configuración de 'maxopentrade'...usa dos operaciones sin importar que, si le digo '0' sigue usando dos operaciones...estaba trabajando bien antes incluso hoy y ahora de repente ha decidido que va a permitir dos operaciones abiertas todo el tiempo sin importar lo que le diga....

la semana pasada si le decía que permitiera 5 operaciones a la vez permitía 5 operaciones a la vez y cuando le decía que permitiera 1 operación a la vez permitía una operación a la vez.... ¡He VISTO que funciona!

Ahora no puedo hacer que funcione para salvarme.

Pensé que tal vez había perdido un paréntesis o algo en la línea si MaxOpenTrade ...

TradeSettings();

if (StopLossMode) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (TakeProfitMode) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

if(OrdersTotal() < MaxOpenTrade)

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

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

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Error opening BUY order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0); [/PHP]

so I changed it to this...

[PHP] TradeSettings();

if (StopLossMode) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (TakeProfitMode) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

if(OrdersTotal() < MaxOpenTrade){

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

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

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Error opening BUY order : ", GetLastError());

}

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

no hay mejora, sigue ignorando el control MaxOpenTrade.

ok ayuda si sigo la pista de que la señal de los dos que estoy cambiando....lol si sólo estoy usando la señal # 2 y el cambio de la configuración de la señal # 1 que tiene sentido ¿eh?

sí estoy perdiendo mis canicas.

 
for (int o = 0; o <= MaxOpenTrade; o ++)

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

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

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

return(0);

lo que no hace es modificar las órdenes al mismo tiempo... Supongo que tengo que hacer algo similar con la función de modificación de órdenes para que todas se modifiquen al mismo tiempo también...

 

No estoy seguro, pero no creo que sea la forma correcta de hacer lo que quieres hacer.

Utiliza la siguiente función:

int CountTrades()

{

int count=0;

int trade;

for(trade=OrdersTotal()-1;trade>=0;trade--)

{

OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber)

continue;

if(OrderSymbol()==Symbol()||OrderMagicNumber()==MagicNumber)

if((OrderType()==OP_SELL) || (OrderType()==OP_BUY))

count++;

}//for

return(count);

}

Ahora llámala en tu programa como

if CountTrades<MaxTrades then....

Además, deshazte de esa costumbre de contar hacia arriba en un bucle "for" y utiliza un estilo de cuenta atrás. Será útil cuando trate de cerrar operaciones y en general resultará en un estilo de codificación más consistente.

Buena suerte.

 

ok lo hice, actualicé todo en el GGlongs Ea con el CountTrades() incluso el anterior CloseAll() cosa que hiciste antes que estaba usando el OrdersTotal()...Así que TODO en esta construcción en particular es ahora la cuenta atrás en lugar de contar hacia arriba llamo a esa función mucho.

El EA ahora parece funcionar bien para abrir múltiples órdenes al mismo tiempo y para s/l o t/p al mismo tiempo...

modificarlas por otro lado....eso es irracional y no las modifica todas al mismo tiempo...

for (int t = 0; t < MaxOpenTrade; t ++)

if(CountTrades() < MaxOpenTrade)

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

return(0);

if (!EachTickMode) BarCount = Bars;

[/PHP]

something about this doesn't work right...however when I do this although it becomes crazy it ends up being more profitable...

this is the code for the 'altered' version that corresponds to the test reports below...when it's like this basically it doesn't modify anything at all....

//Trailing stop for long position

if(TrailingStopMode && TrailingStop > 0) {

if(Bid - OrderOpenPrice() > Point * TrailingStop || OrderOpenPrice() - Bid >= 0) { //below trigger the Ilevel==Ask

if(OrderStopLoss() < Bid - Point * TrailingStop || OrderStopLoss() == 0) {

for (int t = 0; t < MaxOpenTrade; t ++)

if(CountTrades() < MaxOpenTrade)

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

return(0);

if (!EachTickMode) BarCount = Bars;

TrailingStopMode = False; //resets mode after each order

StopLossMode = False; //resets mode after each order

continue;

this is the code that corresponds to the 'unaltered' reports below... This modifys but not as I imagine it should doing them all at the same time....

[PHP]//Trailing stop for long position

if(TrailingStopMode && TrailingStop > 0) {

if(Bid - OrderOpenPrice() > Point * TrailingStop || OrderOpenPrice() - Bid >= 0) { //below trigger the Ilevel==Ask

if(OrderStopLoss() < Bid - Point * TrailingStop || OrderStopLoss() == 0) {

//for (int t = 0; t < MaxOpenTrade; t ++)

//if(CountTrades() < MaxOpenTrade)

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

//return(0);

if (!EachTickMode) BarCount = Bars;

TrailingStopMode = False; //resets mode after each order

StopLossMode = False; //resets mode after each order

continue;

aunque no me gusta como se modifica según el informe es mucho más rentable....

Me gustaría poder controlar la modificación para hacerla como yo quiero sólo para saber que puedo. quizás al final es mejor dejarlo así pero quiero saber cómo hacer que las modifique todas al mismo tiempo como está haciendo con la apertura y los cierres.

Archivos adjuntos:
 

Ahora, ahora, ahora... has llegado tan lejos... así que piensa bien... tienes el código de counttrades, así que por qué no modificarlo para hacer las cosas de modificación de órdenes... algo así...

int ModifyTrades()

{

int trade;

for(trade=OrdersTotal()-1;trade>=0;trade--)

{

OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber)

continue;

if(OrderSymbol()==Symbol()||OrderMagicNumber()==MagicNumber)

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen); /etc.

}//for

}

Tienes lo básico, y ahora depende de ti para averiguar el resto.

Buena suerte.

 
Maji:
Ahora, ahora, ahora ... usted ha llegado tan lejos ... así que pensar en serio ... usted tiene el código counttrades, así que ¿por qué no modificarlo para hacer el orden de modificar cosas ... algo como esto ...

int ModifyTrades()

{

int trade;

for(trade=OrdersTotal()-1;trade>=0;trade--)

{

OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber)

continue;

if(OrderSymbol()==Symbol()||OrderMagicNumber()==MagicNumber)

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen); /etc.

}//for

}

Ya tienes lo básico, y ahora te toca a ti averiguar el resto.

Buena suerte.

eso funciona...ver adjunto...

el archivo .htm era demasiado grande para subirlo...basta con decir que modifica cada orden contando hacia abajo al mismo tiempo.... es incluso resonantemente rentable no está mal para esta señal ruddy.

Archivos adjuntos: