Como codificar? - página 149

 

Problema do sinal de não-deslocamento

Olá kevin07,

Os alertas de não ziguezague estão funcionando, mas não correspondem a uma linha em ziguezague. Recebi vários alertas, mas a linha de ziguezague não foi pintada. Além disso, quando carrego o indicador pela primeira vez, ele dá um alerta. Você pode olhar para o código e ver se consegue detectar o problema? O alerta por e-mail também funciona muito bem, obrigado por tê-lo incluído. Qualquer coisa que você possa fazer será muito apreciada.

Com os melhores cumprimentos, Tom

 

nonlagzigzag

Olá tk748, O alerta inicial que surgiu quando você carregou o índio indica a direção atual do comércio desde a última maior alta ou a menor baixa (que pode ter ocorrido várias velas de volta). Lamento saber que os alertas intermediários se apagam antes que a próxima linha seja traçada. A declaração IF para o alerta poderia ter um filtro adicional para verificar que a Direção Atual != Direção Anterior para que alertas adicionais não apareçam até que a próxima linha seja traçada. (Estou envolvido na finalização de minha EA e não posso resolver isso para você neste momento). Durante o dia, eu tenho que trabalhar. Durante a noite, eu tenho que dormir. Sem um EA, eu não terei muitas (quaisquer) negociações. Minha prioridade é usar um ziguezague ou um indi de volitividade como filtro para evitar que algumas profissões não lucrativas se abram.

Se eu descobrir como adicionar esse código adicional no processo, eu o informarei.

Melhores Desejos, kevin07

 

Straddle Script

Eu recebi este script mas gostaria de ter a opção de definir um cronômetro para que ele troque a Londres aberta... quão difícil seria adicionar isto e você poderia me indicar diretamente ou me mostrar o código para fazer isso?

Como sempre... Agradeço sua ajuda!!

#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 não-precisos

Olá kevin07,

Obrigado pelo trabalho que você fez neste indicador. Talvez durante sua codificação EA você tenha uma idéia de como fazer os sinais aparecerem no momento apropriado. Entretanto, talvez outra pessoa aqui tenha tempo para resolver o problema. Boa sorte com a sua EA.

Cumprimentos,

Tom

 

Por favor, ajude-me a adicionar o código matigale

Eu acabei de criar este EA usando este site: Expert Advisor Builder for MetaTrader 4, baseado em regras simples de negociação.

Você pode experimentar esta EA para ver o resultado. Defina SL = 100, TP = 300 , trailing stop = 70 e execute-o em EUR/USD H4.

Por favor, ajude-me a colocar martigale para comercializar este sistema:

Use um valor para que 100 pips = 2% do saldo da conta

Se o comércio n-1 for perdido, o dobro da quantidade de comércio n até a posição de fechamento com lucro.

Muito obrigado!

Arquivos anexados:
 
vinafx:
Eu acabei de mde este EA usando este site: Expert Advisor Builder para MetaTrader 4 baseado em regras simples de negociação.

Você pode tentar esta EA para ver o resultado. Por favor, ajuste SL = 100, TP = 300 , parada de arrasto = 70 e execute-o em EUR/USD H4.

Por favor, ajude-me a colocar martigale para comercializar este sistema:

Use um valor para que 100 pips = 2% do saldo da conta

Se o comércio n-1 for perdido, o dobro da quantidade de comércio n até a posição de fechamento com lucro.

Muito obrigado!

Vale a pena gastar um pouco de tempo, amigos! Este é o resultado de uma negociação sem código de martigale. Depósito inicial: 10000; 1 lote por negociação. SL = 100; TP = 300; Trailing ST: 70; EUR/USD H4.

Arquivos anexados:
 

como você simplifica este código?

a diferença entre a e b <= c então troca = verdadeiro, senão falso.

até agora, isto é o que eu fiz se alguém puder me mostrar uma maneira mais curta de codificar isto...

se ( a >= b)

{

se (a - b <= c ) comércio = verdadeiro;

se (a - b > c) o comércio = falso;

}

se ( a < b)

{

se (b - a <= c ) comércio = verdadeiro;

se (b - a > c) o comércio = falso;

}

 

tente isto (estou assumindo que c é >= 0)

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

cumprimentos

mladen

fercan:
como você simplifica este código?

a diferença entre a e b <= c então troca = verdadeiro, senão falso.

Até agora, isto é o que eu fiz se alguém puder me mostrar uma maneira mais curta de codificar isto...

se ( a >= b)

{

se (a - b <= c ) comércio = verdadeiro;

se (a - b > c) o comércio = falso;

}

se ( a < b)

{

se (b - a <= c ) comércio = verdadeiro;

se (b - a > c) o comércio = falso;

}
 
mladen:
tente isto (estou assumindo que c é >= 0)
trade = (MathAbs(a-b) <= c);

cumprimentos

mladen

obrigado... eu estava procurando por algo assim antes... obrigado...

 

teste NonLagZigZag_Signal_v2 alertas

tk748:
Olá kevin07,

Obrigado ...Talvez ... você tenha uma idéia de como fazer os sinais aparecerem na hora certa...

Cumprimentos,

Tom

Olá, Tom,

Consegui voltar a este índio ZigZag e filtrar os alertas intermediários. Estou enviando isto imediatamente e ainda não o testei. Por favor, me avise se encontrar algum problema relacionado ao alerta.

Obrigado

kevin07

Arquivos anexados: