[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 124
Você poderia me dizer como colocar um marcador na tabela? Por exemplo, a ordem não abriu, mas pelo menos para ver na tabela, em que ponto deveria ter aberto.
Eu gostaria de colocar um marcador em um gráfico.
Assim
#include <stderror.mqh>//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start()
{
int Err;
//----if(...........) //покупаем
{
Err=OrderSend(..................);
if(Err<0)
SetArrow(159, Blue,"ошибка открытия № "+GetLastError(),Time[0],Open[0],2);
}
if(...........) //продаем
{
Err=OrderSend(..................);
if(Err<0)
SetArrow(159, Red,"ошибка открытия № "+GetLastError(),Time[0],Open[0],2);
}
//----return(0);
}
//+------------------------------------------------------------------+//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 12.10.2007 |//| Описание : Установка значка на графике, объект OBJ_ARROW. |//+----------------------------------------------------------------------------+//| Параметры: |//| cd - код значка |//| cl - цвет значка |//| nm - наименование ("" - время открытия текущего бара) |//| t1 - время открытия бара (0 - текущий бар) |//| p1 - ценовой уровень (0 - Bid) |//| sz - размер значка (0 - по умолчанию) |//+----------------------------------------------------------------------------+void SetArrow(int cd, color cl,
string nm="", datetime t1=0, double p1=0, int sz=0) {
if (nm=="") nm=DoubleToStr(Time[0], 0);
if (t1<=0) t1=Time[0];
if (p1<=0) p1=Bid;
if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_ARROW, 0, 0,0);
ObjectSet(nm, OBJPROP_TIME1 , t1);
ObjectSet(nm, OBJPROP_PRICE1 , p1);
ObjectSet(nm, OBJPROP_ARROWCODE, cd);
ObjectSet(nm, OBJPROP_COLOR , cl);
ObjectSet(nm, OBJPROP_WIDTH , sz);
}
Sim, desculpe ter ficado confuso, escrevendo pela primeira vez no fórum. Copiou primeiro, depois decidiu escrever à mão e ficou confuso. Mas o exemplo acima está correto...
Sim, de fato, há uma contradição entre os dois. Eu simplesmente não investiguei tudo! O autor ainda tem um longo caminho a percorrer para cometer "erros difíceis"!
A questão é esta. Esta não é a primeira vez que me deparo com esta situação:
Se a função traal ou breakeven for chamada em cada tick, por exemplo, aparecerá um erro 1. O que significa, de acordo com a documentação:
ERR_NO_RESULT 1 Нет ошибки, но результат неизвестен
Se não for chamada abertamente na função de início, ou seja, não apenas a função inserida com parâmetros diretamente no início, mas chamá-la em todas as barras, ou seja, não por tiquetaque, então erro - não...
Quero dizer, desta forma:
int start()
{
MovingStopLossToBU();
// Что-то дальше делаем..
Por que assim?
E, em geral, como é implementado de forma mais inteligente? Será intensivo em recursos a cada carrapato?
A questão é esta. Esta não é a primeira vez que me deparo com esta situação:
Se a função traal ou breakeven for chamada em cada tick, por exemplo, aparecerá um erro 1. O que significa, de acordo com a documentação:
Se não for chamada abertamente na função de início, ou seja, não apenas a função inserida com parâmetros diretamente no início, mas chamá-la em todas as barras, ou seja, não por tiquetaque, então erro - não...
Quero dizer, desta forma:
Por que assim?
E em geral, como é implementado de forma mais inteligente? Será intensivo em recursos a cada carrapato?
Eu o aconselharia a não ir por bares, por tantos pips. Se necessário, é para isso que servem os recursos. E o erro "nenhum erro" ocorre quando o preço é repetido para uma modificação que já existe. É por isso que você tem que fazer isso passo a passo, como eu o aconselhei no início.
A questão é esta. Esta não é a primeira vez que me deparo com esta situação:
Se a função traal ou breakeven for chamada em cada tick, por exemplo, aparecerá um erro 1. O que significa, de acordo com a documentação:
Se não for chamada abertamente na função de início, ou seja, não apenas a função inserida com parâmetros diretamente no início, mas chamá-la em todas as barras, ou seja, não por tiquetaque, então erro - não...
Quero dizer, desta forma:
Por que assim?
E, em geral, como é implementado de forma mais inteligente? Vai ser intensivo em recursos a cada carrapato?
A rede de arrasto tenta mover o SL para o mesmo nível. Precisamos adicionar uma verificação, o nível da rede de arrasto deve ser diferente do SL atual.
Se parada - nova parada (em b.u.) não é zero... então modificamos... Caso contrário, não modificamos. É por isso que não está claro para mim como isto acontece. Afinal, entendo que preciso verificar a igualdade entre as paradas passadas e as novas paradas e já o fiz.
Boa tarde,
Você poderia me dizer como colocar um marcador na tabela? Por exemplo, a ordem não abriu, mas pelo menos para ver na tabela, em que ponto deveria ter aberto.
Eu gostaria de colocar um marcador em um gráfico.
Assim
Sim, desculpe ter ficado confuso, escrevendo pela primeira vez no fórum. Copiou primeiro, depois decidiu escrever à mão e ficou confuso. Mas o exemplo acima está correto...
MA1>MA2 e MA1<MA3 e MA3<MA4
Confira a seguinte linha
Há algo de estranho aqui.
MA1>MA2 e MA2>MA3 e depois MA1<MA3
Tanto mais que é suficiente para
A questão é esta. Esta não é a primeira vez que me deparo com esta situação:
Se a função traal ou breakeven for chamada em cada tick, por exemplo, aparecerá um erro 1. O que significa, de acordo com a documentação:
ERR_NO_RESULT 1 Нет ошибки, но результат неизвестенSe não for chamada abertamente na função de início, ou seja, não apenas a função inserida com parâmetros diretamente no início, mas chamá-la em todas as barras, ou seja, não por tiquetaque, então erro - não...
Quero dizer, desta forma:
Por que assim?
E, em geral, como é implementado de forma mais inteligente? Será intensivo em recursos a cada carrapato?
Всем добрый день.
Eu preciso de sua ajuda. Eu não entendo o que está acontecendo.
se (OrderStopLoss() != NormalizeDouble(t6,5))
{
a=10;
}
AcondiçãoOrderStopLoss()= 1.3017 eNormalizeDouble(t6,5)=1.3017 ainda se mantém, ou seja, a=10. Mas não deve ser satisfeita.
Qual pode ser a razão para isso?
A questão é esta. Esta não é a primeira vez que me deparo com esta situação:
Se a função traal ou breakeven for chamada em cada tick, por exemplo, aparecerá um erro 1. O que significa, de acordo com a documentação:
Se não for chamada abertamente na função de início, ou seja, não apenas a função inserida com parâmetros diretamente no início, mas chamá-la em todas as barras, ou seja, não por tiquetaque, então erro - não...
Quero dizer, desta forma:
Por que assim?
E em geral, como é implementado de forma mais inteligente? Será intensivo em recursos a cada carrapato?
A questão é esta. Esta não é a primeira vez que me deparo com esta situação:
Se a função traal ou breakeven for chamada em cada tick, por exemplo, aparecerá um erro 1. O que significa, de acordo com a documentação:
Se não for chamada abertamente na função de início, ou seja, não apenas a função inserida com parâmetros diretamente no início, mas chamá-la em todas as barras, ou seja, não por tiquetaque, então erro - não...
Quero dizer, desta forma:
Por que assim?
E, em geral, como é implementado de forma mais inteligente? Vai ser intensivo em recursos a cada carrapato?
A rede de arrasto tenta mover o SL para o mesmo nível. Precisamos adicionar uma verificação, o nível da rede de arrasto deve ser diferente do SL atual.
A rede de arrasto tenta mover o SL para o mesmo nível. Um controle deve ser adicionado, o nível da rede de arrasto deve ser diferente do SL atual.
Se parada - nova parada (em b.u.) não é zero... então modificamos... Caso contrário, não modificamos. É por isso que não está claro para mim como isto acontece. Afinal, entendo que preciso verificar a igualdade entre as paradas passadas e as novas paradas e já o fiz.Eu tenho um cheque para isso:
Olá! por favor, informe como posso modificar meu pedido inicial e final para 1 T/P, obrigado
gi_304 = CountTrades();
g_price_212 = 0;
double ld_24 = 0;
for (g_pos_300 = OrdersTotal() - 1; g_pos_300 >= 0; g_pos_300--) {
OrderSelect(g_pos_300, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != g_magic_176) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_176) {
if (OrderType() == OP_BUY || OrderType() == OP_SELL) {
g_price_212 += OrderOpenPrice() * OrderLots();
ld_24 += OrderLots();
}
}
}
if (gi_304 > 0) g_price_212 = NormalizeDouble(g_price_212 / ld_24, Digits);
if (gi_332) {
for (g_pos_300 = OrdersTotal() - 1; g_pos_300 >= 0; g_pos_300--) {
OrderSelect(g_pos_300, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != g_magic_176) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_176) {
if (OrderType() == OP_BUY) {
g_price_180 = g_price_212 + TakeProfit2 * Point;
gd_unused_196 = g_price_180;
gd_308 = g_price_212 - Stoploss * Point;
gi_268 = TRUE;
}
}
if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_176) {
if (OrderType() == OP_SELL) {
g_price_180 = g_price_212 - TakeProfit2 * Point;
gd_unused_204 = g_price_180;
gd_308 = g_price_212 + Stoploss * Point;
gi_268 = TRUE;
}
}
}
}
if (gi_332) {
if (gi_268 == TRUE) {
for (g_pos_300 = OrdersTotal() - 1; g_pos_300 >= 0; g_pos_300--) {
OrderSelect(g_pos_300, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() != Symbol() || OrderMagicNumber() != g_magic_176) continue;
if (OrderSymbol() == Symbol() && OrderMagicNumber() == g_magic_176) OrderModify(OrderTicket(), g_price_212, OrderStopLoss(), g_price_180, 0, Yellow);
gi_332 = FALSE;
}
}
}
return (0);
Olá! por favor, informe como posso modificar meu pedido inicial e final para 1 T/P, obrigado
Edite este código para que ele não pareça um hack