Yedelkin: Для каждого вида торгового запроса предусмотрены обязательные поля. Они должны быть заполнены. "Открытие позиции" или "Закрытие позиции" - это всего лишь результат выполнения конкретного торгового запроса, правила заполнения которого - одни и те же. Т.е. берите свой работающий вариант запроса "на открытие" и меняйте тип ордера. Ненужные обязательные поля заполняйте нулями.
sergeev:
já foi respondido!
Obrigado!
Tenho mais uma pergunta: o pedido abaixo é enviado e uma posição é aberta, mas a paragem e o lucro não são definidos. Já os torci de formas diferentes, mas nada ajudou. Qual é o problema, o que é que estou a fazer mal?
MqlTick latest_price; // Будет использоваться для текущих котировокif(!SymbolInfoTick(_Symbol,latest_price)) return; // получить текущее значение котировки в структуру типа MqlTick
...
if(uBuy && opSell==false)
{
if(opBuy) return; // при наличии позиции не добавлять к открытой позиции на покупку
mrequest.action = TRADE_ACTION_DEAL; // немедленное исполнение
mrequest.price = NormalizeDouble(latest_price.ask,_Digits); // последняя цена ask
mrequest.sl = NormalizeDouble(latest_price.ask - StopLoss*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble(latest_price.ask + TakeProfit*_Point,_Digits); // Take Profit
mrequest.symbol = _Symbol; // символ
mrequest.volume = WorkLot; // количество лотов для торговли
mrequest.magic = EA_Magic; // Magic Number
mrequest.type = ORDER_TYPE_BUY; // ордер на покупку
mrequest.type_filling = ORDER_FILLING_FOK; // тип исполнения ордера - все или ничего
mrequest.deviation=Slippage; // проскальзывание от текущей ценыOrderSend(mrequest,mresult); // отсылаем ордерif(mresult.retcode==10009 || mresult.retcode==10008) //запрос выполнен или ордер успешно помещен
{
Alert("Ордер Buy успешно помещен, тикет ордера #:",mresult.order,"!!");
}
else
{
return;
}
}
double summ=0;//переменная, в которую все суммируется
int w=0;//счетчик 3 удачных сумирований
int count_for_buf=0;//Счетчик переходов по буферу ZigZag
while (w<=3)
{
summ=summ+ZigzagBuffer[rates_total-count_for_buf];
count_for_buf++;
if (ZigzagBuffer[rates_total-count_for_buf]!=0)//Увеличиваем счетчик, если используемое значение индикатора не равно нулю
{
w++;
}
}
Desta forma, por alguma razão, pende ou algo mais acontece
WindSW: O pedido abaixo é enviado e uma posição é aberta, mas nenhuma paragem ou lucro é colocado. Já tentei cenários diferentes, mas nada ajudou. Qual é o problema, o que é que estou a fazer mal?
Lembra-se que os pedidos comerciais "para abrir uma posição" têm várias opções a preencher? Algumas destas opções envolvem sl/tp, outras não. Por outras palavras, que modo de negociação tem o seu corretor?
Lembra-se que os pedidos comerciais "para abrir uma posição" têm várias opções a preencher? Algumas destas opções envolvem sl/tp, outras não. Por outras palavras, qual é o modo de negociação do seu corretor?
Corretor Alpari. No modo manual, apenas uma nova encomenda é colocada na execução da troca. Não há outra opção para entrar a partir do mercado. Compreendo que se trata de um pedido de Execução de Troca. Obrigado, já resolvi o problema. Pode dizer-me porque é que o compilador processa o seguinte código:
if(CopyBuffer(ema,0,0,3,emaVal)<0) retorna; // copia os novos valores dos buffers indicadores em arrays
и
IndicatorRelease(ema);
Aparece um aviso de "possível perda de dados devido à conversão do tipo". Não consigo perceber o que se passa aqui, não consigo repará-lo desde ontem à noite.
WindSW: Pode dizer-me por que razão o compilador jura nas seguintes cordas:
if(CopyBuffer(ema,0,0,3,emaVal)<0) retorna; // copiar novos valores de buffer de indicadores em arrays
и
IndicatorRelease(ema);
Aparece um aviso de "possível perda de dados devido à conversão do tipo". Não consigo perceber o que se passa aqui, não consigo resolver o problema desde ontem à noite.
Desta forma, por alguma razão, pende ou algo mais acontece
Vou dar-lhe a minha sugestão:
double summ=0; //переменная, в которую все суммируетсяint w=0; //счетчик 3 удачных сумированийfor(int i=0; i<rates_total; i++)
{
if(ZigzagBuffer[rates_total]!=0 && w<3)//Увеличиваем счетчик, если используемое значение индикатора не равно нулю
{
summ+=ZigzagBuffer[i];
w++;
}
if(w>2) break;
}
Todas as opções estão listadas, excepto o fecho. É por isso que pergunto.
já lhe foi dito.
"Fechando uma posição" é apenas o resultado de um pedido comercial, cujas regras são as mesmas.
Isto é, aceitar o pedido "aberto" e alterar o tipo de pedido.
Preencher os campos obrigatórios desnecessários com zeros.
Yedelkin:
sergeev:Для каждого вида торгового запроса предусмотрены обязательные поля. Они должны быть заполнены. "Открытие позиции" или "Закрытие позиции" - это всего лишь результат выполнения конкретного торгового запроса, правила заполнения которого - одни и те же. Т.е. берите свой работающий вариант запроса "на открытие" и меняйте тип ордера. Ненужные обязательные поля заполняйте нулями.
já foi respondido!
Obrigado!
Tenho mais uma pergunta: o pedido abaixo é enviado e uma posição é aberta, mas a paragem e o lucro não são definidos. Já os torci de formas diferentes, mas nada ajudou. Qual é o problema, o que é que estou a fazer mal?
como somar os últimos 3 valores ZigZag?
Desta forma, por alguma razão, pende ou algo mais aconteceLembra-se que os pedidos comerciais "para abrir uma posição" têm várias opções a preencher? Algumas destas opções envolvem sl/tp, outras não. Por outras palavras, que modo de negociação tem o seu corretor?
Lembra-se que os pedidos comerciais "para abrir uma posição" têm várias opções a preencher? Algumas destas opções envolvem sl/tp, outras não. Por outras palavras, qual é o modo de negociação do seu corretor?
Corretor Alpari. No modo manual, apenas uma nova encomenda é colocada na execução da troca. Não há outra opção para entrar a partir do mercado. Compreendo que se trata de um pedido de Execução de Troca. Obrigado, já resolvi o problema. Pode dizer-me porque é que o compilador processa o seguinte código:
if(CopyBuffer(ema,0,0,3,emaVal)<0) retorna; // copia os novos valores dos buffers indicadores em arrays
и
IndicatorRelease(ema);
Aparece um aviso de "possível perda de dados devido à conversão do tipo". Não consigo perceber o que se passa aqui, não consigo repará-lo desde ontem à noite.
if(CopyBuffer(ema,0,0,3,emaVal)<0) retorna; // copiar novos valores de buffer de indicadores em arrays
и
IndicatorRelease(ema);
Aparece um aviso de "possível perda de dados devido à conversão do tipo". Não consigo perceber o que se passa aqui, não consigo resolver o problema desde ontem à noite.
Que tipo de variável é ema?
Já está. Ver que tipo de variável deve ser usada para armazenar as pegas indicadoras, e combiná-la.
como se somam os últimos 3 valores ZigZag?
Desta forma, por alguma razão, pende ou algo mais aconteceVou dar-lhe a minha sugestão: