Como codificar? - página 79

 

Legal, obrigado pessoal, ambas as sugestões são provavelmente melhores do que aquilo em que eu estava trabalhando.

 

Alguém por favor me ajude....

Hi...

Espero que alguém aqui possa me ajudar a codificar isto. Isto é martiangle EA e o que eu quero fazer é:

1 . Quando a 2ª camada do poste está aberta, quero que o ponto-alvo na 1ª camada se mova para o ponto-alvo na 2ª camada. Assim, quando o ponto-alvo for atingido na 2ª camada, esse 2 poste pode fechar ao mesmo tempo. Se a 3ª camada estiver aberta, esse ponto-alvo na 1ª e 2ª camada pode se mover para o preço do 3º ponto-alvo.

Quando a 1ª camada abre, e tem lucro exemplo 15 pip (TP 32), a ea faz o travamento a preço sl (exemplo 5 pip)Assim, quando o preço inverte 10 pip que poste pode fechar automaticamente com lucro 5 pips.Só para a 1ª camada poste apenas.2ª camada não precisa ser ativado porque este martiângulo EA.

Sinto muito pelo meu mau inglês. Espero que alguém possa me ajudar a colocar um código neste EA. Obrigado.

martiangle_rsi_.mq4

Cumprimentos

Realmente precisa de ajuda

Arquivos anexados:
 

Comente ajuda, por favor.

Estou tentando criar um comentário para mostrar na tela, mas não estou tendo muita sorte

Consegui obter a contagem de tubos para um único par, mas não consigo mostrar o total coletado para vários pares.

Qualquer ajuda seria ótima

este é um exemplo desse código

//========== FUNÇÃO getPipValue

duplo getPipValue(duplo ord,int dir)

{

val. duplo;

RefreshRates();

if(dir == 1) val=(NormalizeDouble(ord,Digits) -

NormalizeDouble(Ask,Digits));

else val=(NormalizeDouble(Bid,Digits) - NormalizeDouble(ord,Digits));

val = val/Ponto*co;

return(val);

}

//== função final

int getSpread()

{

int spread=MarketInfo(Symbol(),MODE_SPREAD);

return(spread);

}

//========== FUNCTION getOpenOrders

void getOpenOrders()

{

int nsl, nsd;

mngMagic de corda, trailon;

int totalorders = OrdersTotal();

for(int j=0; j<totalordens;j++)

{

OrderSelect(j, SELECT_BY_POS, MODE_TRADES);

if((OrderType() == OP_BUY || OrderType() == OP_SELLL) &&

OrderSymbol() == Symbol()&&(MagicNumber==0 || MagicNumber ===

OrderMagicNumber()))

{

double val=getPipValue(OrderOpenPrice(),OrderType());

//int val = OrderProfit()/(OrderLots()*10);

}

if(MagicNumber == 0)

mngMagic = "Todas as negociações "+Symbol()+";

senão

mngMagic = "Trades with magic number = "+MagicNumber";

//RefreshRates();

Comentário("Equilíbrio: ",AccountBalance(),", Patrimônio da conta: ",AccountEquity(),", Lucro da conta: ",AccountProfit(), "Order Open: ",OrderOpenPrice(),

"Contagem de Pip": ", val,

"Meu limite de corte de conta: ",Open_Loss_To_CloseTrades",

"Gerenciando: ", mngMagic");

Saúde

 

O valor de pips de uma ordem atual pode ser obtido através do seguinte:

( OrderClosePrice() - OrderOpenPrice() ) / MarketInfo( OrderSymbol(), MODE_POINT )

Se você quiser usar "bid" e "ask", você também precisa usar as relacionadas ao símbolo da ordem, ou seja, MarketInfo( OrderSymbol(), MODE_BID ) e MarketInfo( OrderSymbol(), MODE_ASK ).

 

ralph.ronnquist

Gidday

obrigado pelo código que usei, mas ele só conta para um par e não para o total de todos os pares .

Tenho experimentado vários cenários, mas ainda não estou trabalhando.

tenho uma ea que abre 3 posições que eu corro em 5 pares, posso ver a contagem do pip para cada par, mas não o coletivo.

 
Beno:
ralph.ronnquist

Gidday

obrigado pelo código que usei, mas ele só conta para um par e não para o total de todos os pares .

Tenho experimentado vários cenários, mas ainda não estou trabalhando.

tenho uma ea que abre 3 posições que eu corro em 5 pares, posso ver a contagem do pip para cada par, mas não o coletivo.

bem, se você estiver familiarizado com as variáveis globais, você pode usá-las para armazenar as informações das pips em cada par referenciado por cada símbolo. Criar outra variável global que referencie o valor total das pips e chamar esta variável global em particular, obtê-la atualizada à medida que as pips aumentam, armazená-la. As variáveis globais podem ser acessadas por cada ea, já que são armazenadas na memória do MT4.

Posso ajudar a codificá-la para você, se quiser.

 

Gidday ShahJB

Já vi variáveis globais em código antes, mas tive zero de experiência com elas, então sim, eu gostaria de aceitar sua ajuda para codificar isso como se estivesse me deixando louco.

 
Beno:
Gidday ShahJBI já viu variáveis globais em código antes, mas teve zero experiência com elas, então sim, eu gostaria de aceitar sua ajuda para codificar isso como se isso me deixasse louco.

acabei de codificar o seguinte prontamente. Por que não adicionar este código primeiro? Tente e me tente se falhar. Preciso pegar um pouco de sono.

string val_old_string = "val_old" + Symbol();

int val_old_old = GlobalVariableGet(val_old_string);

if(val != val_old_old)

{

int pips_increment_decrement;

int current_total_pips;

contador de cordas = "Contador de Pips";

double pips_counter = "GlobalVariableGet(counter)";

if (val>val_old)

{

pips_increment_decrement = val - val_old;

atual_total_pips = pips_increment_decrement + pips_counter;

GlobalVariableSet(counter, current_total_pips);

GlobalVariableSet(val_old_string, val);

}

senão

{

pips_increment_decrement = val_old - val;

atual_total_pips = pips_counter - pips_increment_decrement_decrement;

GlobalVariableSet(counter, current_total_pips);

GlobalVariableSet(val_old_string, val);

}

}

 

Por que isso não está funcionando???

Olá,

Eu sou um novato completo na programação. Graças aos postos e recursos de aprendizagem neste site, ganhei coragem para tentar construir poucos EAs, um dos quais usará Lguerre como um dos gatilhos (usei este site para me ajudar; Expert Advisor Builder for MetaTrader 4 ). O problema com meu EA é que ele não abrirá ordens de compra quando os gatilhos forem atingidos. Eu construí alguns EAs usando o site acima mencionado e eles executam ordens para posições longas e curtas muito bem (os EAs usaram RSI's). Por favor, dê uma olhada no EA anexo, 3-28, e me informe o que estou fazendo incorretamente.... estou usando o formato errado para os níveis a serem atingidos antes que uma negociação seja executada? O Laguerre precisa de parâmetros adicionais?

Passei um tempo embaraçoso com isso e estou prestes a desistir.... qualquer ajuda é GRATUITAMENTE apreciada!!!!!

Pareço ter encontrado a resposta... por que preciso multiplicar a Laguerre em minha EA, embora ?????

Arquivos anexados:
3-31.mq4  10 kb
 

Encontrei uma posição de fechamento de problemas. Ajude-me, por favor.

Encontrei um problema que não sei como resolver. Meu programa tem algumas ordens abertas e as fecha todas juntas, mas às vezes eu penso que algumas das ordens não são preenchidas, portanto ele continua esperando até que sejam preenchidas e isso tranca meu programa. Qual foi a melhor maneira de fechar todas as ordens abertas? Muito obrigado por sua ajuda.

Aqui está o código:

int OrdensTotalLong()

{

int order_total = 0;

para (int i = 0; i < OrderTotal(); i++)

{

OrderSelect(i,SELECT_BY_POS, MODE_TRADES);

se (OrderType() == OP_BUY)

order_total+++;

}

return(order_total);

}

int MaxLongOrder()

{

ordem int = 0;

lotes duplos comprados = 0;

para (int i = 0; i < OrdensTotal(); i++)

{

OrderSelect(i,SELECT_BY_POS, MODE_TRADES);

if ((OrderType() == OP_BUY) && (OrderLots() > lotsbuyed))

{

lotsbuyed = OrderLots();

ordem = i;

}

}

devolução(pedido);

}

int CloseLong()

{

enquanto (OrdensTotalLong() > 0) //até que não haja Ordens abertas (fechar todas)

{

se (OrderSelect(MaxLongOrder(), SELECT_BY_POS, MODE_TRADES) == falso) continuar;

OrderClose(OrderTicket(),OrderLots(), Bid, 3, Green);

}

}

retorno(0);

}