Pergunte! - página 129

 
forexarchitect:
Olá, pessoal

Tenho uma pergunta aqui... como posso mudar o seguinte;

duplo MaxLot externo = 1,50;

duplo max_lot = GetMaxLot(OP_BUY, OP_SELLL);

se (max_lot >= MaxLot) lote = CalcHedgeLot(order_type);

(tipo_de_ordem)]: ", lote);

if (lote == -1) retorno (lote);

lote = NormalizeDuplo(lote, LotPrec);

if (lote > MaxLot) lote = MaxLot;

if (lote < LoteMínLote) lote = LoteMínLote;

retorno (lote);

}

a verificação acima para OP_BUY AND OP_SELL

pergunta: como posso mudar para qualquer OP_BUY ou qualquer OP_SELL

apreciem

Você deve modificar o código da função GetMaxLot(), ou talvez você possa usar GetMaxLot(OP_BUY, OP_BUY); e GetMaxLot(OP_SELLL, OP_SELLL); (depende do código - pode fazer assim ou não).

Mas acho que vale a pena tentar

Goen

 
Goen:
É isto que você está procurando?

-----------

int bars_count=WindowBarsPerChart();

int bar=WindowFirstVisibleBar();

-----------

Goen

Obrigado, Goen .

 
Goen:
Você deve modificar o código da função GetMaxLot(), ou talvez você possa usar GetMaxLot(OP_BUY, OP_BUY); e GetMaxLot(OP_SELLL, OP_SELLL); (depende do código - pode fazer assim ou não).

Mas eu acho que vale a pena tentar

Goen

obrigado por responder...

o que preciso mudar aqui? agradeço sua ajuda

duplo GetMaxLot(int tipo1, int tipo2)

{

duplo max_lot = 0,0;

int cnt = OrderTotal();

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

{

se (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continuar;

se (OrderSymbol() != Symbol()) continuar;

se (OrderMagicNumber() != Magic) continuar;

if (OrderType() != type1 && OrderType() != type2) continue;

if (max_lot == 0 || OrderLots() >= max_lot)

{

max_lot = OrderLots();

}

}

retorno (max_lot);

}

 

um pouco perdido aqui...

 

como adicionar alerta ao indicador tis?

Eu tenho um indicador de MA crossover que funciona muito bem, mas ele não me faz perder muita coisa, você pode me ensinar como adicionar alerta a este indicador, pois eu não sei nada sobre o meta-código...

aqui está o código para o indicador juntos se o próprio indicador, obrigado...

/*[[

Nome := Cruz EMA

Autor := Hapsa

Link := http://www.metaquotes.net/

Janela separada := Não

Janela separada := Não

Primeira cor := Vermelho

Primeiro tipo de desenho := Símbolo

Primeiro Símbolo := 108

Use os segundos dados := Sim

Segunda Cor := VerdeOscuroVivo

Segundo tipo de desenho := Símbolo

Segundo Símbolo := 108

]]*/

#direitos de propriedade intelectual "Hapsa

#ligação de propriedade ""

externo int SlowPeriod=20;

FastPeriod=5;

#números indicadores de propriedade 3

#janela_do_cartão_indicador de propriedade

#indicador de propriedade_cores1 Vermelho

#indicador de propriedade_color2 Verde

duplo L20[];

duplo L50[];

duplo turno=0,val1=0,val2=0;

int init()

{

IndicatorBuffers(3);

SetIndexStyle(0,DRAW_ARROW);

SetIndexStyle(1,DRAW_ARROW);

SetIndexArrow(0,108);

SetIndexArrow(1, 108);

SetIndexBuffer(0,L20);

SetIndexBuffer(1,L50);

//---- indicadores

//----

retorno(0);

}

int start()

{

int counted_bars=IndicatorCounted();

//----

int i = Barras - contadas_barras - 1;

enquanto (i>=0)

{

val1=0;

val2=0;

duplo iMaSlowPrevious = iMA(NULL,0,SlowPeriod,0,MODE_EMA, PRICE_CLOSE, i-1);

duplo iMaSlowCurrent = iMA(NULL,0,SlowPeriod,0,MODE_EMA, PRICE_CLOSE, i);

duplo iMaFastPrevious = iMA(NULL,0,FastPeriod,0,MODE_EMA, PRICE_CLOSE, i-1);

duplo iMaFastCurrent = iMA(NULL,0,FastPeriod,0,MODE_EMA, PRICE_CLOSE, i);

if (iMaFastPreviousiMaSlowCurrent ) val1=High;

if (iMaFastPrevious>iMaSlowPrevious && iMaFastCurrent<iMaSlowCurrent ) val2=Low;

L20=val1+5*Ponto;

L50=val2-5*Ponto;

i--;

}

//----

retorno(0);

}

Arquivos anexados:
cross.mq4  2 kb
cross.ex4  3 kb
 
forexarchitect:
obrigado por responder...

o que preciso mudar aqui? agradeço sua ajuda

duplo GetMaxLot(int tipo1, int tipo2)

{

duplo max_lot = 0,0;

int cnt = OrderTotal();

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

{

se (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continuar;

se (OrderSymbol() != Symbol()) continuar;

se (OrderMagicNumber() != Magic) continuar;

if (OrderType() != type1 && OrderType() != type2) continue;

if (max_lot == 0 || OrderLots() >= max_lot)

{

max_lot = OrderLots();

}

}

retorno (max_lot);

}

Sim, você pode usar GetMaxLot(OP_BUY,OP_BUY); para obter o maxlot somente para compra de comércio aberto, e GetMaxLot(OP_SELL,OP_SELLL); para obter o maxlot somente para venda de comércio aberto.

Você pode simplificar este código "if (max_lot == 0 || OrderLots() >= max_lot)" com "if (OrderLots() > max_lot)".

Porque se max_lot = 0 automaticamente será inferior a qualquer lote das negociações abertas. E assinar ">=" muda com ">" porque se tiver o mesmo valor, não há necessidade de atualizar o max_lot com o mesmo valor, esforço inútil. Ele só será atualizado se o novo valor for maior que max_lot.

Ao alterar esse código, ele poderá tornar seu processo mais rápido.

Goen

 

questão de perda de estoque

Olá,

Sou novo em tudo isso, mas estou tentando entender como tudo isso funciona.

Agora estou tentando escrever um EA e receio estar perdendo algo fundamental.

Se, em meu código, eu substituir

OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0",",MAGIC,0,Red);

com

OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask+Point*10,0,"",MAGIC,0,Red);

E teste esta nova versão no testador de estratégia, eu recebo menos pedidos. Como adicionar uma perda de estoque pode diminuir o número de entradas de pedidos? Posso imaginar que o número aumenta no caso em que a adição de uma ordem de parada faz com que as ordens saiam mais cedo e assim novas ordens podem ser adicionadas mais rapidamente, mas as ordens LESS...?

Alguma idéia?

Obrigado

 
azertyken2:
Olá,

Sou novo em tudo isso, mas estou tentando entender como tudo isso funciona.

Agora estou tentando escrever um EA e receio estar perdendo algo fundamental.

Se, em meu código, eu substituir

OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,"",ordercount,0,Red);

com

OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask+Point*10,0,"",ordercount,0,Red);

E teste esta nova versão no testador de estratégia, eu recebo menos pedidos. Como adicionar uma perda de estoque pode diminuir o número de entradas de pedidos? Posso imaginar que o número aumenta no caso em que a adição de uma ordem de parada faz com que as ordens saiam mais cedo e assim novas ordens podem ser adicionadas mais rapidamente, mas as ordens LESS...?

Alguma idéia?

Obrigado

10 pips podem estar muito próximos do limite de stop imposto pelo corretor (varia entre corretores) - ou seja, se for um mínimo de 10 pips e o preço oscilar 1 pip dentro disto à medida que a ordem é colocada, a ordem será rejeitada...

 

Omelete, você está certo, aumentando o tampo da tampa, obrigado! :-)

 
#property indicator_color1 Magenta

#property indicator_color2 Yellow

extern bool TrendDirectionUp=true;

string Color1;

string Color2;

int init() {

if(TrendDirectionUp==true)//Conditionj 1

{

Color1=Yellow;

Color2=CLR_NONE;

}

if(TrendDirectionUp==false)//Condition2

{

Color1=CLR_NONE;

Color2=Magenta;

}

SetIndexStyle(0,DRAW_ARROW,0,star_size,Color1);

SetIndexStyle(1,DRAW_ARROW,0,star_size,Color2);

SetIndexArrow(0,172);//333

SetIndexArrow(1,172);//334

SetIndexBuffer(0,b1);

SetIndexBuffer(1,b2);

return(0);

}

Neste momento, ambas as cores 1 e 2 mostram 'preto' no gráfico!!

Algum Guru especialista pode me ajudar a resolver este problema???

Obrigado com antecedência!