Você acha que qualquer pessoa que não seja de língua materna inglesa pode entender sua história? Eu entendo ovelhas e pastoreio, Sr. John, mas a história não faz sentido para mim. (Talvez seja eu... então sinto muito)
Você poderia explicar seu problema em algum "inglês internacional" usando as definições gerais para comércio/mql4?
O que significa esta frase?
Você acha que qualquer pessoa que não seja de língua materna inglesa pode entender sua história? Eu entendo ovelhas e pastoreio, Sr. John, mas a história não faz sentido para mim. (Talvez seja eu... então sinto muito)
Você poderia explicar seu problema em algum "inglês internacional" usando as definições gerais para comércio/mql4?
O que significa esta frase?
SOMENTE VELA - Como abrir uma posição? - deve ser o próximo assunto. Moderador, o que você acha? posso?
Nós implementamos o cenário selecionado
Como enviar pedidos?
int start() // start program { // We have some function here like "int CalculateCurrentOrders(string symbol)" and "double LotsOptimized()" // many different thing, suddenly! we have our "CheckOpen();" //-------------------------------- void CheckOpen() // void - because function return nothing { // start body int res; // we will use changeable "res" this is "int" value if( Bid==Close[1]+4*Point) // check conditions: Bid or Ask must be 4 Point above a BAR if no - nothing happen if Yes go below { // start body if res=OrderSend(Symbol(),OP_SELL,0.02,Bid,0,Open[1]+37*Point,0,"",MAGICMA,0,Red); // start "res" and "res" is sending message to platform to open position // what position is in "()" allways must be the same sequence symbol , op_*** , lot size , ...) return; // if "res" do it then retunrn too ... y ... "if". Because "if" is done return too CheckOpen(). Because "CheckOpen()" is done stop and end. } // stop body if } // stop body function "void CheckOpen()" //--------------------------------
Nós temos um pedido
Mas o que eu deveria fazer para abrir duas posições em uma função?
Temos nosso cenário CheckForOpenS1() neste cenário Nós compramos duas vezes se nosso preço estiver no lugar correto, é claro.
//-------------------------------- void CheckOpen1() // define first function { int res; if( Bid==Close[1]+4*Point) { res=OrderSend(Symbol(),OP_SELL,0.02,Bid,0,0,0,"",MAGICMA,0,Red); return; } } void CheckOpen2() // define second function { int res; if( Bid==Close[1]+8*Point) // change 8 Point ( 4 ==> 8 ) { res=OrderSend(Symbol(),OP_SELL,0.02,Bid,0,0,0,"",MAGICMA,0,Red); return; } } // I DONT KNOW.............. //-------------------------------- / our scenario void CheckForOpenS1()= true; void CheckOpen1() void CheckOpen2() //-------------------------------- / OR LIKE THESE int res; if ( CheckForOpenS1() == true) { res= CheckOpen1() CheckOpen2(); }
SOMENTE VELA - Como abrir uma posição? - deve ser o próximo assunto. Moderador, o que você acha? posso?
Nós implementamos o cenário selecionado
Como enviar pedidos?
Nós temos um pedido
Mas o que eu deveria fazer para abrir duas posições em uma função?
Temos nosso cenário CheckForOpenS1() neste cenário Nós compramos duas vezes se nosso preço estiver no lugar correto, é claro.
Eu realmente não entendo o que você está pedindo... você não está se tornando muito claro... ou talvez seja apenas eu.
Mas este código lhe causará problemas. . .
if( Bid == Close[1] + 4 * Point)
Leia este tópico:Preço de lata != preço ?
poderia de outra forma
como escrever uma simples EA com vários cenários de eventos
era uma vela pequena - características abertas 1
era a vela média -características abertas 2
era uma vela grande -características abertas 3
A
função 1 abre 1 posição e faz com que feche
As 2 abrem 2 posições guardando-as e fecham
A s 3 abrem 2 posiçõe s mas a um preço diferente
cada vez que temos uma vela, cada vez que há outra função que faz coisas diferentes
Sei que você não pode escrever para mim, mas qualquer conselho....
Como prometido, olhei novamente para isso, mas ainda não faz sentido para mim, sinto muito.
Isto nunca vai funcionar:
double bull() // check first candle -mabey is bull { double A=Open[1]; // we use double because euro/usd have point example 1.9865 double B=Close[1]; double C=B-A; return(C); // <-- C is probably never 1,2,3,4,5..... } // when we have bull catalog/ segregate him.. switch(bull()) // <-- the expression here is something like 0.00123. None of your case statements will be executed. { case 1 : break; // nothing happen case 2 : break; // nothing happen case 3 : break; // nothing happen case 4 : CheckForOpenS1(); break; // start CheckForOpenS1()- take it and go thrue with this.. we will see want is '...S1' case 5 : CheckForOpenS2(); CheckForOpenS3() break; // start CheckForOpenS2() and S3 .... }
Leia aqui sobre como usar o switch: https://docs.mql4.com/basis/operators/switch
Isto não está claro em absoluto:
void CheckOpen2() // define second function { int res; if( Bid==Close[1]+8*Point) // change 8 Point ( 4 ==> 8 ) { res=OrderSend(Symbol(),OP_SELL,0.02,Bid,0,0,0,"",MAGICMA,0,Red); return; } }
A expressão igual talvez não seja desejada, mas o que deveria ser?
Se a expressão for <, então enviará imediatamente uma ordem de venda quando uma nova barra chegar (já que o preço aberto da nova barra é talvez < do que o preço fechado da barra previos+8*Ponto)
Se o preço deve ser lido como >, então ele esperará que o preço suba um pouco e então enviará um pedido de VENDA. Eu realmente não entendo sua estratégia, então talvez seja desejado assim.
Eu também poderia imaginar que você quer dizer:
if(Bid<Close[1]-8*Point)
Você está negociando com um corretor de 4 dígitos onde 1 Ponto é igual a 1 Pip? Caso contrário, o preço deve mover apenas 0,8 pips o que provavelmente também não é o que você quer (E o spread poderia confundi-lo adicionalmente).
Acho que você deve rever seu código e corrigi-lo onde puder. Sinta-se à vontade para fazer outras perguntas se tiver alguma específica. Esteja ciente de que sua estratégia pode funcionar completamente diferente, apenas porque um codificador entendeu mal o que você quis dizer.
Minha estratégia é
se a vela aparecer BULL de 4 a 5 pontos , após a vela (sempre, sob quaisquer condições) se preparar para enviar dois pedidos de compra (se o preço atingir nosso nível exigido para comprar um, e como chegar à compra2)
se a vela aparecer BULL de 6 a 7 pontos, depois que a vela (sempre, sob quaisquer condições) se preparar para enviar trêsordens de compra (se o preço atingir nosso nível exigido para comprar uma, e como chegar à compra2e 3)
Tenho um pequeno erro em algum lugar no Bid ou Ask why EA não funciona ... (não consigo encontrar este erro , mas normalmente a EA funciona muito bem para o que escrevi ... compra e fecha) mas mostra meu plano técnico.
FAÇO COM QUE ELE FUNCIONE AGORA
Quando você olha para o fundo , ele fica muito lotado e às vezes substitui os cenários da EA Bull4 e o cenário abre a Bull6 Bull4 e quando percebi que de repente ele muda de idéia e termina a Bull6 Bull6
Pode ser simplificado ?
//+------------------------------------------------------------------+ //+------------------------------------------------------------------+ #define MAGICMA 20050610 //+------------------------------------------------------------------+ //| Calculate open positions HOW MEANY OF THIS | //+------------------------------------------------------------------+ int CalculateCurrentOrders(string symbol) { int buys=0,sells=0; //---- for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA) { if(OrderType()==OP_BUY) buys++; } } //---- return orders volume return(buys); } //+------------------------------------------------------------------+ //| Calculate candle | //+------------------------------------------------------------------+ bool BULL4() { if(Close[1]-Open[1]>=4*Point && Close[1]-Open[1]<=5*Point) return(true); } bool BULL6() { if(Close[1]-Open[1]>=6*Point && Close[1]-Open[1]<=7*Point) return(true); } //+------------------------------------------------------------------+ //| Check for open order conditions | //+------------------------------------------------------------------+ void CheckForOpenBULL41() { int res; if(Bid==Close[1]+3*Point) { res=OrderSend(Symbol(),OP_BUY,0.41,Ask,0,Close[1]-25*Point,0,"",MAGICMA,0,Blue); return; } } void CheckForOpenBULL42() { int res; if(Ask>OrderOpenPrice()+2*Point) { res=OrderSend(Symbol(),OP_BUY,0.42,Ask,0,Close[1]-25*Point,0,"",MAGICMA,0,Blue); return; } } void CheckForOpenBULL61() { int res; if(Bid==Close[1]+4*Point) { res=OrderSend(Symbol(),OP_BUY,0.61,Ask,0,Close[1]-25*Point,0,"",MAGICMA,0,Red); return; } } void CheckForOpenBULL62() { int res; if(Ask>OrderOpenPrice()+2*Point) { res=OrderSend(Symbol(),OP_BUY,0.62,Ask,0,Close[1]-25*Point,0,"",MAGICMA,0,Red); return; } } void CheckForOpenBULL63() { int res; if(Ask>OrderOpenPrice()+2*Point) { res=OrderSend(Symbol(),OP_BUY,0.63,Ask,0,Close[1]-25*Point,0,"",MAGICMA,0,Red); return; } } //+------------------------------------------------------------------+ //| Check for close order conditions | //+------------------------------------------------------------------+ void CheckForCloseBULL() { RefreshRates(); if(OrderOpenPrice()+4*Point< Ask) for (int i = OrdersTotal(); i >= 0;i--) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); if (OrderSymbol() == Symbol()) { bool ticket = true; if (OrderType() == OP_BUY) ticket = OrderClose(OrderTicket(),OrderLots(),Bid,1,Black); } } } //+------------------------------------------------------------------+ //| Start function | //+------------------------------------------------------------------+ void start() { if(BULL4()==true && CalculateCurrentOrders(Symbol())==0) CheckForOpenBULL41(); else CheckForCloseBULL(); if(CalculateCurrentOrders(Symbol())==1) CheckForOpenBULL42(); else CheckForCloseBULL(); //---// if(BULL6()==true && CalculateCurrentOrders(Symbol())==0) CheckForOpenBULL61(); else CheckForCloseBULL(); if(CalculateCurrentOrders(Symbol())==1) CheckForOpenBULL62(); else CheckForCloseBULL(); if(CalculateCurrentOrders(Symbol())==2) CheckForOpenBULL63(); else CheckForCloseBULL(); if(CalculateCurrentOrders(Symbol())==3) CheckForOpenBULL63(); else CheckForCloseBULL(); if(CalculateCurrentOrders(Symbol())==4) CheckForCloseBULL(); } //+------------------------------------------------------------------+
Minha estratégia é
se a vela aparecer BYK de 4 a 5, depois que a vela (sempre, sob quaisquer condições) se preparar para enviar dois pedidos de compra de dados (se o preço atingir nosso nível exigido para comprar um, e como chegar ao zkup 2)
se a vela aparecer BYK de 6 a 7, depois que a vela (sempre, sob quaisquer condições) se preparar para enviar três ordens de compra (se o preço atingir nosso nível exigido para comprar uma, e como chegar ao zkup 2 e 3)
Tenho um pequeno erro em algum lugar no Bid ou Ask why EA não funciona ... (não consigo encontrar este erro , mas normalmente a EA funciona muito bem para o que escrevi ... compra e fecha) mas mostra meu plano técnico.
Quando você olha para o fundo , ele fica muito lotado e às vezes substitui os cenários da EA Bull4 e o cenário abre a Bull6 Bull4 e quando percebi que de repente ele muda de idéia e termina a Bull6 Bull6
Pode ser simplificado ?
BYK ???
Isto é errado . . .
for (int i = OrdersTotal(); i >= 0;i--)
... as posições começam em 0, portanto você precisa contar para baixo a partir de OrderTotal() - 1
Você faz isso . . . .
void CheckForCloseBull() // close ALL AT ONCE buy of course { RefreshRates(); if( OrderOpenPrice() > Ask+6*Point)
. . . você recebe oOrderOpenPrice() mas para qual ordem ? você terá várias ordens abertas . .
Você usares variável para manter o valor de retorno de suas chamadas OrderSend() e o que você faz com ele ? nada, por quê ?
O que são valores de retorno da função ? Como eu os utilizo ?
Muito boa resposta RaptorUK
1. problema res
Estou estudando EA Moving Average resolution there is only 3 times, all as a function of time, after for it does not exist.
A primeira vez que ele é usado para informações "olá, vamos usar res".
uma segunda vez para enviar o pedido. OrderSend devolve o número de pedidos, que é nosso res = 343321, abowe a função 'void CheckForOpen () " res não existe.
mas...
Eu acho que se o " CheckForOpen () vazio Observe a verdade deste comando OrderSelect de alguma forma traga esse número exceto "void CheckForOpen () " Eu tentarei ...
2. Problema OrderOpenPrice()
você está absolutamente certo, mas esta sintaxe funciona surpreendentemente bem :) Vou tentar fazer algo nesse lugar
3. OrdensTotal() - 1você está absolutamente certo,
4. BYK (POLÔNIA)= O tradutor BULL tem problemas
Para aqueles que ainda não entenderam minha EA, escreva uma história: D hehehe
Todos os passos que damos, são as funções. Agora estou escrevendo em um computador é uma função.Assisto a um programa de TVé a segunda função, etc.
Agora vamos passar para a cozinha ...
Temos um livro de receitas, abrimos a tabela de conteúdos e lemos pontos sequenciais
Primeiro Como fazer costeletas de porco - colocar a carne em uma tigela, adicionar sal, pimenta, descascar batatas
À esquerda o evento - as características certas, e alguns temas - não , a menos que seja fácil!
Depois de ler como fazer as costeletas de porcocomeçam a fazer, a fazer coisas. O bife tem 25 minutos, e como eu comecei a ter um fim.
Já se passaram cinco minutos M5 ( cinco minutos depois),começamos a ler o próximo ponto, um livro de receitas.
Segundo Como fazer uma salada - Descasque cenouras, descasque cebolas, e outras porcarias.
E aqui a magia acontece, porque criou o dobro, o bordo (segunda pessoa). Fazemos isto em costeletas de porco e salada ao mesmo tempo.Começamos ater na cozinha duas pessoas em uma.
Quanto mais pontos você lê, mais pessoas aparecem na cozinha. As pessoas na cozinha desaparecem depois de concluir suas tarefas e lavam a louça.
O evento são velas - apresenta várias opções para comprar e vender ou fechar.
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
ONLYCANDLE - Como catalogar ou segregar a vela?
POR FAVOR, ME CORRIJA!
Temos a vela de Bullishand Bearish Eu quero segregar isto
é como umpastor. pastor tem fazenda, fazenda e tem ovelhas.
quando é época de barbear as ovelhas pastoreadas, o Sr. JOHN vai para a fazenda apanhar essas ovelhas e ...
A primeira ovelha apanhada é muito pequena para se barbear - John soltou.
Aovelha seguinte é boa - John pega tesoura e a ovelha é nua
Apróxima ovelha é boa e tem lã grande - John pega a tesoura BIG e a ovelha é nua
Apróxima ovelha é Áries - John Take Knife e Áries é eunuco neste momento
Eu quero fazer o mesmo com vela / barras
Nossa vela está indo Bar[0].... esperamos..... ela está indo, esperamos.... 15 minutos (M15) e aí está! ... o que é isso? verifique!
Se eu tenho vela Bullisch e vela (preço aberto [1]- preço fechado [1]) tem 2 pontos muito pequenos - deixe ir, não fazemos nada
Se eu tenho vela Bullisch (preço aberto [1] - preço fechado [1]) tem 4 pontos - então inicie o programa
CheckForOpenS1(); comece a função comprar se nosso preço ficar + 4 Pontos acima de nossa vela (cenário1)
Se eu tenho Vela Bullisch e Vela (preço aberto [1] - preço fechado [1]) tenho 5 pontos - Isto é muito Grande Vela - então inicie o programa
CheckForOpenS2(); comece a função comprar se nosso preço ficar + 14 Ponto acima de nossa vela (cenário2)
Eu quero esta bruxa cada vela, quero começar o programa COMPRA se eu tiver vela grande, se eu tiver vela pequena demais eu estarei esperando pela próxima
Então...isto está correto, mas eu tenho idéia :)
Por favor, não escreva nenhuma coisa necessária.