[Arquivo!] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por ela. Não poderia ir a lugar algum sem você - 2. - página 67

 

Eu adicionei linhas ao roteiro (adicionado BUYSTOP e SELLSTOP), mas ele não compila, dá erros. Você pode me dizer, por favor, o que está errado?

#propriedade copyright "Copyright © 2010, Khlystov Vladimir".
#link da propriedade "cmillion@narod.ru"
#property show_inputs
//--------------------------------------------------------------------
stoploss int externo = 0, // nível de SL, se 0, SL não for exibido
lucro interno externo = 0, //t nível de TP, se 0, TP não for exibido
magia int externa = 123456; //número de um pedido
bool BUY = falso; //abrir pedido de BUY
venda externa = falso; //abrir ordem de venda
bool BUYSTOP externo = falso, //abrir ordem BUYSTOP
bool SELLSTOP externo = falso, //abrir ordem SELLSTOP
Lote duplo externo = 0,1; // volume do pedido
escorregamento interno externo = 3; // desvio de preço máximo permitido para ordens de mercado
//--------------------------------------------------------------------
duplo SL,TP;
//--------------------------------------------------------------------
int start()
{
se (COMPRAR)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); caso contrário TP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); caso contrário SL=0;
OPENORDER ("Comprar");
}
se (VENDER)
{
if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); caso contrário TP=0;
if (stoploss!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits); caso contrário SL=0;
OPENORDER ("Sell");
}
se (BUYSTOP)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); caso contrário TP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); caso contrário SL=0;
OPENORDER ("Buy Stop");
}
se (SELLSTOP)
{
if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); caso contrário TP=0;
if (stoploss!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits); caso contrário SL=0;
OPENORDER ("Sell Stop");
}
retorno(0);
}
//--------------------------------------------------------------------
OPENORDER(string ord) vazio
{
int error,err;
enquanto (verdadeiro)
{ erro=verdadeiro;
if (ord==="Buy" ) error=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP, "BUY",Magic,0,Blue);
if (ord==="Sell") error=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,SL,TP, "SELL",Magic,0,Red);
if (ord=="BuyStop" ) error=OrderSend(Symbol(),OP_BUYSTOP, Lot,NormalizeDouble(Ask,Digits),SL,TP, "BUYSTOP",Magic,0,Blue);
if (ord=="SellStop") error=OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Bid,Digits),SL,TP, "SELLSTOP",Magic,0,Red);
se (erro==-1) // falha para comprar OK
{
ShowERROR();
err++;Sleep(2000);RefreshRates();
}
se (erro ||| err >10) retornar;
}
retornar;
}
//--------------------------------------------------------------------
ShowERROR nulo()
{
int err=GetLastError();
interruptor ( err )
{
caso 1: devolução;
caso 2: Alerta("Sem conexão com o servidor comercial ",Symbol()); retornar;
caso 3: Alerta("Parâmetros incorretos de erro ",Símbolo()); retornar;
caso 130: Alerta("Erro no fechamento do bilhete", Símbolo()); retornar;
caso 134: Alerta("Não há dinheiro suficiente", Símbolo()); retornar;
caso 146: Alerta("O Subsistema de Comércio de Erros está ocupado", Símbolo()); retornar;
caso 129: Alerta("Error Wrong price ",Symbol()); retornar;
caso 131: Alerta("Error Incorrect volume ",Symbol()); retornar;
case 4200:Alerta("O objeto de erro já existe ",Symbol()); retornar;
padrão: Alert("Error ",err," ",Symbol());return;
}
}
//--------------------------------------------------------------------

Obrigado de antemão.

 
nemo811:

você pode terminar o operador com um ";" ao invés de um ","?

 
FreeLance:

você pode terminar o operador com um ";" ao invés de um ","?


Obrigado, estou apenas aprendendo :))) Obrigado.
 
nemo811:

Obrigado, estou apenas aprendendo :))) Obrigado.

Obrigado! Eu mesmo sou assim... ;)
 
FreeLance:

Obrigado! Eu mesmo sou assim... ;)

:)))) Uma questão ainda mais ardente. Este roteiro abre ordens de mercado, mas não coloca ordens pendentes. Fiz asneira novamente. Você poderia me dizer, por favor, o que está errado?
 
nemo811:

:)))) Pergunta ainda mais premente. Este roteiro abre ordens de mercado, mas não coloca ordens pendentes. Fiz asneira novamente. Você pode me dizer o que está errado?

Qual é a idéia comercial por trás disso?
 
Eu tenho um EA que ignora ordens definidas manualmente. O script que estou tentando modificar foi projetado para transformar uma ordem "manual" em uma ordem com um parâmetro mágico. Essa é a idéia).
 
nemo811:
Tenho uma EA que ignora ordens abertas definidas "manualmente". O script que estou tentando modificar foi projetado para transformar uma ordem "manual" em uma ordem com um parâmetro mágico. Essa é a idéia).


Boa noite!

Eu não conseguia entender - então adiei.

Mas você também - leve seu tempo - estude a matemática!

A linguagem e os objetos de manipulação são simples...

A execução às vezes é coxa?

Portanto, há laxismo de ambos os lados.

;)

 

Corrigido o código acima. Os pingentes não estão sendo colocados. Por favor, ajude-me a encontrar erros.

#direitos autorais "Copyright © 2010, Khlystov Vladimir"
#link da propriedade "cmillion@narod.ru"
#property show_inputs
//--------------------------------------------------------------------
stoploss int externo = 0; // nível de SL, se 0, SL não for exibido
lucro int int externo = 0; //t nível de TP, se 0, TP não é exibido
magia int int externa = 123456; //número de um pedido
bool BUY = falso; //abrir pedido de BUY
venda externa = falso; //abrir ordem de venda
bool BUYSTOP externo = falso; //abrir ordem BUYSTOP
bool SELLSTOP externo = falso; //abrir ordem SELLSTOP
Lote duplo externo = 0,1; // volume do pedido
escorregamento interno externo = 3; // desvio de preço máximo permitido para ordens de mercado
Distância interna externaSet = 20; //Mercado distância
//--------------------------------------------------------------------
duplo SL,TP;
//--------------------------------------------------------------------
int start()
{
se (COMPRAR)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); caso contrário TP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); caso contrário SL=0;
OPENORDER ("Comprar");
}
se (VENDER)
{
if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); caso contrário TP=0;
if (stoploss!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits); caso contrário SL=0;
OPENORDER ("Sell");
}
se (BUYSTOP)
{
if (takeprofit!=0) TP = NormalizeDouble(Ask + takeprofit*Point,Digits); caso contrário TP=0;
if (stoploss!=0) SL = NormalizeDouble(Ask - stoploss*Point,Digits); caso contrário SL=0;
OPENORDER ("Buy Stop");
}
se (SELLSTOP)
{
if (takeprofit!=0) TP = NormalizeDouble(Bid - takeprofit*Point,Digits); caso contrário TP=0;
if (stoploss!=0) SL = NormalizeDouble(Bid + stoploss*Point,Digits); caso contrário SL=0;
OPENORDER ("Sell Stop");
}
retorno(0);
}
//--------------------------------------------------------------------
OPENORDER(string ord) vazio
{
int error,err;
enquanto (verdadeiro)
{ erro=verdadeiro;
if (ord==="Buy" ) error=OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,"",Magic,0);
if (ord==="Sell") error=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),slippage,SL,TP,",Magic,0);
if (ord==="BuyStop" ) error=OrderSend(Symbol(),OP_BUYSTOP, Lot,NormalizeDouble(Ask + DistanceSet*Point,Digits),slippage,SL,TP,"",Magic,0);
if (ord=="SellStop") error=OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Bid - DistanceSet*Point,Digits),slippage,SL,TP,",Magic,0);
se (erro==-1) // falha para comprar OK
{
ShowERROR();
err++;Sleep(2000);RefreshRates();
}
se (erro ||| err >10) retornar;
}
retornar;
}
//--------------------------------------------------------------------
ShowERROR nulo()
{
int err=GetLastError();
interruptor ( err )
{
caso 1: devolução;
caso 2: Alerta("Sem conexão com o servidor comercial ",Symbol()); retornar;
caso 3: Alerta("Parâmetros incorretos de erro ",Símbolo()); retornar;
caso 130: Alerta("Erro no fechamento do bilhete", Símbolo()); retornar;
caso 134: Alerta("Não há dinheiro suficiente", Símbolo()); retornar;
caso 146: Alerta("O Subsistema de Comércio de Erros está ocupado", Símbolo()); retornar;
caso 129: Alerta("Error Wrong price ",Symbol()); retornar;
caso 131: Alerta("Error Incorrect volume ",Symbol()); retornar;
case 4200:Alerta("O objeto de erro já existe ",Symbol()); retornar;
padrão: Alert("Error ",err," ",Symbol());return;
}
}
//--------------------------------------------------------------------

Obrigado.

 
Dimka-novitsek:


Não, é exatamente o contrário, do que o que você escreveu. É claro, obrigado por sua atenção. Pensei muito, descobri desta e daquela maneira, e você está errado.

Na verdade, vejo que o problema não é com os eixos e pedaços, e ainda não o resolvi.

Essa é uma afirmação muito estranha de sua parte. Uma maçã não voará para cima a partir da força de seus pensamentos, mas cairá sobre sua cabeça...

É assim que é e nada mais.

Ou você vive em um determinado país, onde tudo é estritamente o contrário: lucro - valor com um menos? Pense nisso: compre a 1.0100, venda a 1.0200 (tome neste nível, ou seja, mais alto do que o preço de compra). Temos um lucro de 100 pontos. Não há outra maneira. Se você tentar definir o take no nível de 1,0000, você terá erro 130 - paradas erradas. Take Buy (OP_BUY) não pode ser inferior ao preço de abertura. E parar - exatamente o contrário - deve ser menor do que o preço de abertura da posição Comprar. Para Vender é vice-versa - O take é inferior ao preço aberto, Stop é superior.

Parece que você não só precisa aprender matemática, mas também matemática de primeira série. Sem ofensa.