Como codificar? - página 313

 

Hi,

é possível com código modificar apenas a ordem de compra ou venda do símbolo do gráfico ativo atual?

Será muito útil para mim em um script onde eu uso a função WindowsPriceonDropped para abrir um pedido.

Obrigado.

 

...

dasio,

Tente algo como isto :

for (int i=OrdersTotal()-1; i>=0; i--)

{

if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES)==false) continue;

if (OrderSymbol()!=Symbol()) continue;

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

{

// do the proccessing you wish here

}

}

dasio:
Hi,

é possível com código modificar apenas a ordem de compra ou venda do símbolo do gráfico ativo atual?

Será muito útil para mim em um script onde eu uso a função WindowsPriceonDropped para abrir um pedido.

Obrigado
 

Quem quer um desafio?

Preciso de algum código para fazer o seguinte, veja a captura de tela em anexo. Isto seria Comprar comércio.

Eu tentei um loop, uma confusão de se condições e nenhum dos dois produziu resultados que eu estou procurando.

Parece ser simples, mas não consegui colocá-lo em funcionamento.

Arquivos anexados:
maexample.jpg  54 kb
 

Sua condição de entrada poderia ser escrita de forma similar a esta :

double pipMultiplier = 1;

if (Digits==3 || Digits==5) pipMultiplier = 10;

double ma = iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,1);

bool openBuy = (Low[1]>ma && High[1]<(ma+5.0*Point*pipMultiplier));

if (openBuy)

{

// your code here

}

cyber1:
Preciso de algum código para fazer o seguinte, veja a captura de tela em anexo. Isto seria Comprar comércio.

Eu tentei um loop for loop, uma confusão de se as condições e nenhuma delas produziu resultados que eu estou procurando.

Parece ser simples, mas não consegui colocá-lo em funcionamento.
 
mladen:
Sua condição de entrada poderia ser escrita de forma semelhante a esta :
double pipMultiplier = 1;

if (Digits==3 || Digits==5) pipMultiplier = 10;

double ma = iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,1);

bool openBuy = (Low[1]>ma && High[1]<(ma+5.0*Point*pipMultiplier));

if (openBuy)

{

// your code here

}

Mas há muito mais do que isso. O código que você postou me daria o sinal para a barra que atravessa a Média Móvel. Mas eu também preciso de uma maneira de entrar numa profissão em qualquer barra que ultrapasse a barra que se move até 5 barras, desde que não ultrapasse MA+5. A razão pela qual não estou aceitando um sinal de compra na barra de straddle é que existe outro indicador que deve mostrar um valor VERDADEIRO que pode não ser VERDADEIRO na barra de straddle, mas se for VERDADEIRO em qualquer barra até 5 barras além da barra de straddle e não tiver excedido o limite de MA +5, ainda posso aceitar uma troca. Não aceitando múltiplas trocas apenas uma por cada conjunto.

O seguinte é o que eu tenho até agora. Neste ponto, estou apenas marcando barras elegíveis com uma seta embaixo, compre apenas. Uma vez que eu tenha isso trabalhado, então colocarei meu código para executar a ordem. Sei que parece simples, mas a menos que esteja faltando algo óbvio, não é.

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

double Poin;

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

//| Custom initialization function |

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

int init()

{

//---- indicators

if (Point==0.00001) Poin=0.0001;

else {

if (Point==0.001) Poin=0.01;

else Poin=Point;

}

//----

return(0);

}

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

// +

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

int deinit(){

return(0);

}

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

//| Custom indicator iteration function |

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

int start(){

int MAM1StartBar=1;

int M1MAEntryPoint1=0;

int M1MAEntryPoint2=5;

string sObjName;

//------Indicators-------------//

double MAM0= iMA(NULL,0,20,0,0,0,MAM1StartBar);

double MAM1= iMA(NULL,0,20,0,0,0,MAM1StartBar+1);

double M1High0 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar),Digits);

double M1High1 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+1),Digits);

double M1High2 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+2),Digits);

double M1High3 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+3),Digits);

double M1High4 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+4),Digits);

double M1High5 = NormalizeDouble(iHigh(NULL,PERIOD_M1,MAM1StartBar+5),Digits);

double M1Low0 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar),Digits);

double M1Low1 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+1),Digits);

double M1Low2 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+2),Digits);

double M1Low3 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+3),Digits);

double M1Low4 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+4),Digits);

double M1Low5 = NormalizeDouble(iLow(NULL,PERIOD_M1,MAM1StartBar+5),Digits);

// double MAM1TRL1=NormalizeDouble(MAM0+M1MAEntryPoint1*Poin,Digits);

// double MAM1TRL2=NormalizeDouble(MAM0+M1MAEntryPoint2*Poin,Digits);

//Blue arrow indicates straddle bar

if(M1High0>= MAM0 && M1Low0<=MAM0){

sObjName="Test_BLine1"+Time[MAM1StartBar];

ObjectCreate(sObjName, OBJ_ARROW, 0, Time[MAM1StartBar],Low[MAM1StartBar]-1.5*Poin);

ObjectSet(sObjName, OBJPROP_ARROWCODE, 241);

ObjectSet(sObjName, OBJPROP_COLOR, Blue);

}

//Aqua arrow indicates straddle bar+1

if(M1Low1=MAM0){

if(M1High1<=MAM0+M1MAEntryPoint2*Poin){

if(M1Low0 > MAM0){

sObjName="Test_BLine2"+Time[MAM1StartBar];

ObjectCreate(sObjName, OBJ_ARROW, 0, Time[MAM1StartBar],Low[MAM1StartBar]-1*Poin);

ObjectSet(sObjName, OBJPROP_ARROWCODE, 241);

ObjectSet(sObjName, OBJPROP_COLOR, Aqua);

}

}

}

//----

return(0);

}

 

Nesta captura de tela você precisaria abortar na barra 4 porque a barra 3 excede o limite de MA +5, o que significa que na barra 4 você precisaria verificar se a barra 3 excedeu o limite de MA +5, o que é o fim desta configuração comercial.

Aqui todas as 5 barras são elegíveis porque nenhuma delas excedeu o limite de MA +5

Arquivos anexados:
 

Nesta captura de tela, você precisaria abortar na barra 4 porque a barra 3 excede o limite MA +5, o que significa que na barra 4 você precisaria verificar se a barra 3 excedeu o limite MA +5, isso é o fim desta configuração comercial.

Aqui todas as 5 barras são elegíveis porque nenhuma delas excedeu o limite de MA +5

 

...

ciber1

Em seus exemplos, pelo que vejo, para poder abortar como você descreve, você também tem que conhecer o futuro (já que antes da barra "abortar" as regras se aplicavam e devolviam um sinal de "vai")

Por outro lado, se você tentar testar todas as barras de volta para a condição de entrar, eventualmente você sempre terá uma "quebra de regra" e não será capaz de entrar na posição

cyber1:
Nesta captura de tela, você precisaria abortar na barra 4 porque a barra 3 excede o limite MA +5, o que significa que na barra 4 você precisaria verificar se a barra 3 excedeu o limite MA +5, isso é o fim desta configuração comercial.

Aqui todas as 5 barras são elegíveis porque nenhuma delas excedeu o limite MA +5

 

Fechar todos os EA de Comércio Aberto

Alguém pode me ajudar a fazer esta ea?

Esta EA fechará o par comercial sempre aberto quando atingir o objetivo de lucro e prejuízo.

Quando fechar tudo, então comece a monitorar o comércio aberto.

Eu tenho um talento limitado para fazer isso.

Esta ea separada da ea principal de cada par.

 

Linhas dinâmicas de sinal e resistência/suporte.

Você pode me ajudar a traduzir este indicador no idioma MT4?

a:=(hhv(fechar,tpr)+llv(fechar,tpr)+close)/3;

b:=(a1*2)-hhhv(close,tpr)+close)/3; b:=(a1*2)-hhhv(close,tpr);

movendo b:=mov(b,tpr,simples);

c:=(a1*2)-llv(close,tpr)+close)/3; c:=(a1*2)-llv(close,tpr);

movendo c:=mov(c,tpr,simples);

d:=(hhv(close,tpr/2)+llv(close,tpr/2)+close)/3;

movendo d:=mov(d,tpr/2,simples);

fluxo:=(b+c+d)/3;

movendo fluxo:=mov(fluxo,tpr,simples).

hhv= valor máximo do período (o valor mais alto de preço fechado no período de tempo escolhido)

llv= valor mínimo do período (o menor valor de preço fechado no período de tempo escolhido)

tpr= período de tempo (de 1 até o que você quiser)

mov= média móvel.

A saída deve ter "fluxo" e "fluxo em movimento"! Mesmo que também tenha "b", "moving b", "c", "moving c", "d" e "moving d", não é uma coisa ruim!

Obrigado.

Este fórum é ótimo......

Lucmat

Arquivos anexados:
immagine.jpg  258 kb