Bom dia! Alguém pode explicar por que os preços nos gráficos H4 e M15 não correspondem? Na captura de tela na M15, o preço cruzou a linha vermelha (à esquerda da linha vertical). E um minuto depois há uma captura de tela do H4 onde o preço ainda está muito longe (à direita da linha). E aqui nesse programa apenas outra dtz tem uma sombra da vela (a vela está no extremo direito)
Equal: Bom dia! Alguém pode explicar por que os preços nos gráficos H4 e M15 não correspondem? Na captura de tela na M15, o preço cruzou a linha vermelha (à esquerda da linha vertical). E um minuto depois há uma captura de tela do H4 onde o preço ainda está muito longe (à direita da linha). E aqui está a imagem desse programa, mas outra dtz tem uma sombra da vela (a vela está mais à direita)
Você é novo no fato de que as cotações diferem em diferentes empresas de corretagem? Eles são diferentes mesmo para demonstração e reais em uma mesma empresa de corretagem! Que surpresa (:
Tudo funciona, mas estou usando um consultor de grade, que no momento cobre um monte de pedidos e como resultado o lucro está se sobrepondo, eu gostaria que o lucro desse monte fechado fosse totalizado e apenas a quantidade exibida (como implementado no indicadorIceFX DrawProfit), em vez de separadamente para cada pedido como eu tenho agora. Ajude-me a fazer a coisa certa :)
Vitalie Postolache: É novo para você que as cotações em diferentes empresas de corretagem são diferentes? Sim, eles são diferentes mesmo para demonstração e comércio real em uma mesma empresa de corretagem! Que surpresa (:
A surpresa é diferente. Esta é uma e a mesma conta real e o preço muda (não o mesmo) apenas mudando para um período de tempo diferente.
Em outra empresa de corretagem também em uma conta real quando se muda o gráfico tudo está bem! O fato de que preços diferentes são diferentes é claro, não é claro que se tenha como se dois preços ao mesmo tempo, um sobre os minutos, um sobre as horas fosse diferente (muito diferente). Entendo que não deveria ser assim, mas me pergunto onde o problema pode estar. A propósito, o castiçal "corrigido" em cerca de uma hora após a abertura do próximo.
Tudo funciona, mas estou usando um consultor de grade, que no momento cobre um monte de pedidos e como resultado o lucro está se sobrepondo, eu gostaria que o lucro desse monte fechado fosse totalizado e apenas a quantidade exibida (como implementado no indicadorIceFX DrawProfit), em vez de separadamente para cada pedido como eu tenho agora. Ajude-me a fazer a coisa certa :)
ilnur17021992: As ordens são abertas pelo fabricante da rede de robôs, para todo o grupo ele calcula e coloca um TP comum, no qual elas são então fechadas.
Foto da tela anexada:
É assim:
//+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ int TotalPos=-1; voidOnTick() { // остальной код
//-- if(OrdersTotal()!=TotalPos) { // не мучаем каждый тик for(int i=OrdersHistoryTotal()-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { if(OrderSymbol()==Symbol() && OrderType()<=1) { History();
... } }}} TotalPos=OrdersTotal(); // запомним количество
//-- }
//+------------------------------------------------------------------+ //| Create Object istory | //+------------------------------------------------------------------+ void History() { string Ticket=(string)OrderTicket(); color col=Red; if(OrderType()==0)col=Blue; datetime a=OrderOpenTime(); double b=OrderOpenPrice(); datetime c=OrderCloseTime(); double d=OrderClosePrice(); double prSep=OrderProfit()+OrderCommission()+OrderSwap(); double prAll=0; int cn=0; string hTicket; for(int i=OrdersHistoryTotal()-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { if(OrderSymbol()==Symbol() && OrderType()<=1) { datetime ct=OrderCloseTime(); // 60 секунд разницы между закрытием первой и последней в сетке if(c<=ct+60 && c>=ct-60) { prAll+=OrderProfit()+OrderCommission()+OrderSwap(); hTicket=(string)OrderTicket(); cn++; } }}} ObjectCreate(Ticket+"Open",OBJ_ARROW,0,a,b); ObjectSet(Ticket+"Open",OBJPROP_COLOR,col); ObjectSet(Ticket+"Open",OBJPROP_ARROWCODE,1);
A etiqueta de preço(OBJ_ARROW_LEFT_PRICE) pode ter seu próprio texto em vez do preço, se sim, como?
E aqui nesse programa apenas outra dtz tem uma sombra da vela (a vela está no extremo direito)
Bom dia! Alguém pode explicar por que os preços nos gráficos H4 e M15 não correspondem? Na captura de tela na M15, o preço cruzou a linha vermelha (à esquerda da linha vertical). E um minuto depois há uma captura de tela do H4 onde o preço ainda está muito longe (à direita da linha).
E aqui está a imagem desse programa, mas outra dtz tem uma sombra da vela (a vela está mais à direita)
Tentando escrever algo semelhante:IceFX DrawProfit
Código:
{
for(int i=0;i<OrdersHistoryTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && OrderSymbol()==Symbol() && OrderType()<=1)
History();
}
}
void History()
{
string Ticket=IntegerToString(OrderTicket());
color col=Red;
if(OrderType()==0)col=Blue;
datetime a=OrderOpenTime();
double b=OrderOpenPrice();
datetime c=OrderCloseTime();
double d=OrderClosePrice();
double profit=OrderProfit();
ObjectCreate(Ticket+"Open",OBJ_ARROW,0,a,b);
ObjectSet(Ticket+"Open",OBJPROP_COLOR,col);
ObjectSet(Ticket+"Open",OBJPROP_ARROWCODE,1);
ObjectCreate(Ticket+"Line",OBJ_TREND,0,a,b,c,d);
ObjectSet(Ticket+"Line",OBJPROP_COLOR,col);
ObjectSet(Ticket+"Line",OBJPROP_WIDTH,1);
ObjectSet(Ticket+"Line",OBJPROP_STYLE,STYLE_DOT);
ObjectSet(Ticket+"Line",OBJPROP_RAY,0);
ObjectCreate(Ticket+"Close",OBJ_ARROW,0,c,d);
ObjectSet(Ticket+"Close",OBJPROP_COLOR,Green);
ObjectSet(Ticket+"Close",OBJPROP_ARROWCODE,3);
ObjectCreate(Ticket+"Profit",OBJ_TEXT,0,c,d);
ObjectSet(Ticket+"Profit",OBJPROP_WIDTH,2);
ObjectSetText(Ticket+"Profit",DoubleToString(profit,2),10,"Arial",White);
ObjectSet(Ticket+"Profit",OBJPROP_PRICE1,d+Point*5);
ObjectSet(Ticket+"Profit",OBJPROP_TIME1,c+10000);
}
Tudo funciona, mas estou usando um consultor de grade, que no momento cobre um monte de pedidos e como resultado o lucro está se sobrepondo, eu gostaria que o lucro desse monte fechado fosse totalizado e apenas a quantidade exibida (como implementado no indicadorIceFX DrawProfit), em vez de separadamente para cada pedido como eu tenho agora. Ajude-me a fazer a coisa certa :)
É novo para você que as cotações em diferentes empresas de corretagem são diferentes? Sim, eles são diferentes mesmo para demonstração e comércio real em uma mesma empresa de corretagem! Que surpresa (:
Tentando escrever algo semelhante:IceFX DrawProfit
Código:
{
for(int i=0;i<OrdersHistoryTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && OrderSymbol()==Symbol() && OrderType()<=1)
History();
}
}
void History()
{
string Ticket=IntegerToString(OrderTicket());
color col=Red;
if(OrderType()==0)col=Blue;
datetime a=OrderOpenTime();
double b=OrderOpenPrice();
datetime c=OrderCloseTime();
double d=OrderClosePrice();
double profit=OrderProfit();
ObjectCreate(Ticket+"Open",OBJ_ARROW,0,a,b);
ObjectSet(Ticket+"Open",OBJPROP_COLOR,col);
ObjectSet(Ticket+"Open",OBJPROP_ARROWCODE,1);
ObjectCreate(Ticket+"Line",OBJ_TREND,0,a,b,c,d);
ObjectSet(Ticket+"Line",OBJPROP_COLOR,col);
ObjectSet(Ticket+"Line",OBJPROP_WIDTH,1);
ObjectSet(Ticket+"Line",OBJPROP_STYLE,STYLE_DOT);
ObjectSet(Ticket+"Line",OBJPROP_RAY,0);
ObjectCreate(Ticket+"Close",OBJ_ARROW,0,c,d);
ObjectSet(Ticket+"Close",OBJPROP_COLOR,Green);
ObjectSet(Ticket+"Close",OBJPROP_ARROWCODE,3);
ObjectCreate(Ticket+"Profit",OBJ_TEXT,0,c,d);
ObjectSet(Ticket+"Profit",OBJPROP_WIDTH,2);
ObjectSetText(Ticket+"Profit",DoubleToString(profit,2),10,"Arial",White);
ObjectSet(Ticket+"Profit",OBJPROP_PRICE1,d+Point*5);
ObjectSet(Ticket+"Profit",OBJPROP_TIME1,c+10000);
}
Tudo funciona, mas estou usando um consultor de grade, que no momento cobre um monte de pedidos e como resultado o lucro está se sobrepondo, eu gostaria que o lucro desse monte fechado fosse totalizado e apenas a quantidade exibida (como implementado no indicadorIceFX DrawProfit), em vez de separadamente para cada pedido como eu tenho agora. Ajude-me a fazer a coisa certa :)
O lucro conta em um ciclo separado
O que é isso? Como posso determinar que ordens específicas são um grupo e seu lucro deve ser somado?
Como fechá-los, eles são fechados como um grupo através de uma função ou de alguma outra forma?
As ordens são abertas pelo fabricante da rede de robôs, para todo o grupo ele calcula e coloca um TP comum, no qual elas são então fechadas.
É assim:
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
int TotalPos=-1;
void OnTick()
{
// остальной код
//--
if(OrdersTotal()!=TotalPos) { // не мучаем каждый тик
for(int i=OrdersHistoryTotal()-1; i>=0; i--) {
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if(OrderSymbol()==Symbol() && OrderType()<=1) {
History();
...
//--}
}}} TotalPos=OrdersTotal(); // запомним количество
}
//+------------------------------------------------------------------+
//| Create Object istory |
//+------------------------------------------------------------------+
void History() {
string Ticket=(string)OrderTicket();
color col=Red;
if(OrderType()==0)col=Blue;
datetime a=OrderOpenTime();
double b=OrderOpenPrice();
datetime c=OrderCloseTime();
double d=OrderClosePrice();
double prSep=OrderProfit()+OrderCommission()+OrderSwap();
double prAll=0;
int cn=0;
string hTicket;
for(int i=OrdersHistoryTotal()-1; i>=0; i--) {
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if(OrderSymbol()==Symbol() && OrderType()<=1) {
datetime ct=OrderCloseTime();
// 60 секунд разницы между закрытием первой и последней в сетке
if(c<=ct+60 && c>=ct-60) {
prAll+=OrderProfit()+OrderCommission()+OrderSwap();
hTicket=(string)OrderTicket();
cn++;
}
}}}
ObjectCreate(Ticket+"Open",OBJ_ARROW,0,a,b);
ObjectSet(Ticket+"Open",OBJPROP_COLOR,col);
ObjectSet(Ticket+"Open",OBJPROP_ARROWCODE,1);
ObjectCreate(Ticket+"Line",OBJ_TREND,0,a,b,c,d);
ObjectSet(Ticket+"Line",OBJPROP_COLOR,col);
ObjectSet(Ticket+"Line",OBJPROP_WIDTH,1);
ObjectSet(Ticket+"Line",OBJPROP_STYLE,STYLE_DOT);
ObjectSet(Ticket+"Line",OBJPROP_RAY,0);
ObjectCreate(Ticket+"Close",OBJ_ARROW,0,c,d);
ObjectSet(Ticket+"Close",OBJPROP_COLOR,Green);
ObjectSet(Ticket+"Close",OBJPROP_ARROWCODE,3);
Ticket=cn>1?hTicket:Ticket;
ObjectCreate(Ticket+"Profit",OBJ_TEXT,0,c,d);
ObjectSet(Ticket+"Profit",OBJPROP_ANCHOR,0);
ObjectSetText(Ticket+"Profit",DoubleToString(prAll,2),10,"Arial",/*White*/clrBlack);
ObjectSet(Ticket+"Profit",OBJPROP_PRICE1,d);
ObjectSet(Ticket+"Profit",OBJPROP_TIME1,c+Period()*60*2);
}