Tuttavia, il modo più logico e più semplice di proxy è quello di vietare il cambio di strumento della finestra MT. Quindi suggerisco di considerarlo un bug :)
Il mio Expert Advisor analizza i grafici per un certo numero di mesi, ma ci sono grafici che restituiscono l'intera storia su un grafico al minuto, e ci sono grafici che non mostrano più di un mese e mezzo, e anche questo è se si scorre il grafico indietro manualmente, non scorre nemmeno oltre una certa data.
pycha: Il mio Expert Advisor analizza il grafico per un certo numero di mesi, ma ci sono grafici che restituiscono l'intero storico nel grafico a minuti, e ci sono grafici che non vogliono restituire più di un mese e mezzo, e anche questo è se si scorre il grafico indietro manualmente, anche oltre una certa data non si scorre manualmente.
Il broker decide esattamente quanta storia dare. Se il numero massimo di barre è impostato nelle impostazioni del terminale, e ce ne sono meno sul grafico, allora il broker non ne darà di più.
Ciao Cari utenti del forum. Vorrei fare una richiesta. Qualcuno potrebbe postare un pezzo di codice con una funzione iEnvelopesOnArray() funzionante? Tutti i miei tentativi di domarlo finora sono stati infruttuosi. Ho il sospetto che sia colpa degli sviluppatori. Ecco un indicatore per controllare il suo lavoro.
//+------------------------------------------------------------------+//| Tester_EnvOnArray.mq4 |//| Copyright 2005 г. до нашей эры, MetaQuotes Software Company. |//| https://www.mql4.com |//+------------------------------------------------------------------+#property copyright"2005 г. до нашей эры, MetaQuotes Software Company."#property link"https://www.mql4.com"#property description"Пример индикатора для проверки работы функции iEnvelopesOnArray()"#property strict//--- indicator settings#property indicator_chart_window#property indicator_buffers2#property indicator_color1 Green
#property indicator_color2 Red
//--- indicator buffersdouble ExtEnvBuffer[];
double ExtPriceBuffer[];
//--- bars minimum for calculation#define DATA_LIMIT 100//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+voidOnInit(void)
{
IndicatorShortName("EnvOnArr");
//--- 1 additional buffer are used for counting.
IndicatorBuffers(2);
IndicatorDigits(Digits + 2);
//--- drawing settings
SetIndexStyle(0, DRAW_LINE);
SetIndexDrawBegin(0, DATA_LIMIT);
SetIndexStyle(1, DRAW_NONE);
SetIndexDrawBegin(1, DATA_LIMIT);
//--- all indicator buffers mappingSetIndexBuffer(0, ExtEnvBuffer);
SetIndexBuffer(1, ExtPriceBuffer);
//--- name for DataWindow and indicator subwindow label
SetIndexLabel(0, NULL);
SetIndexLabel(1, NULL);
}
//+------------------------------------------------------------------+//| EnvelopesOnArray |//+------------------------------------------------------------------+intOnCalculate (constint rates_total,
constint prev_calculated,
constdatetime & time[],
constdouble & open[],
constdouble & high[],
constdouble & low[],
constdouble & close[],
constlong & tick_volume[],
constlong & volume[],
constint & spread[])
{
int i, limit;
double prev = 0.0, Deviation = 1;
//--- check for rates totalif(rates_total <= DATA_LIMIT)
return(0);
//--- last counted bar will be recounted
limit = rates_total - prev_calculated;
if(prev_calculated > 0)
{
limit++;
}
//--- price counted in the 2-nd additional bufferfor(i=0; i<limit-1; i++)
ExtPriceBuffer[i] = close[i];
//--- price counted in the 1-st additional bufferfor(i=0; i<limit-1; i++)
ExtEnvBuffer[i] = iEnvelopesOnArray(ExtPriceBuffer, 0, 5, MODE_SMA, 0, 1, MODE_UPPER, i);
//--- donereturn(rates_total);
}
//+------------------------------------------------------------------+
Ciao, ho cercato nella documentazione ma non l'ho trovato. la mia domanda è questa: posso cambiare questa immagine all'avvio dell'EA con il mio logo?
#proprietà icona "\\\\Images\\\\xxx.ico";
e non è stato risolto in alcun modo?
Come potete vedere.
Tuttavia, il modo più logico e più semplice di proxy è quello di vietare il cambio di strumento della finestra MT. Quindi suggerisco di considerarlo un bug :)
Il mio Expert Advisor analizza il grafico per un certo numero di mesi, ma ci sono grafici che restituiscono l'intero storico nel grafico a minuti, e ci sono grafici che non vogliono restituire più di un mese e mezzo, e anche questo è se si scorre il grafico indietro manualmente, anche oltre una certa data non si scorre manualmente.
Ciao Cari utenti del forum. Vorrei fare una richiesta. Qualcuno potrebbe postare un pezzo di codice con una funzione iEnvelopesOnArray() funzionante? Tutti i miei tentativi di domarlo finora sono stati infruttuosi. Ho il sospetto che sia colpa degli sviluppatori. Ecco un indicatore per controllare il suo lavoro.
Ciao a tutti. Sto ricevendo errori durante il test:
2014.12.25 18:04:31.125 2014.11.03 00:00 Test3 EURUSD,H4: ticket non valido per la funzione OrderModify
2014.12.25 18:04:31.125 2014.11.03 00:00 Test3 EURUSD,H4: OrderModify errore 4051
Ho ricontrollato molte volte, non c'è nessun errore (per quanto posso vedere).
Il fallimento avviene in questa parte del programma:
ModifyBuy, ModifySell, SelectBuy, SelectSell - hanno tipo bool
SendBuy, SendSell-int , int TP = 30
while(true)
{
SPREAD=MarketInfo(Symb,MODE_SPREAD);
SelectBuy=OrderSelect(OrderTicketBuy,SELECT_BY_TICKET);//buy
RefreshRates();
if(NormalizeDouble(OrderOpenPrice()+TP*Point,Digits)<NormalizeDouble(Ask,Digits))
{
ModifyBuy=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(10-SPREAD)*Point,Bid+(30- SPREAD)*Point,0,0);
R=1;
break;
}//if2
Timen=OrderCloseTime();
if(Timen>0)
{
//--------------------------
Stop=StopLevel(Symb);
StopLong();//значение Long2
StopLoss_Func();//значение SL
//--------------------------
SendBuy=OrderSend(Symb,OP_BUYSTOP,Lote,Ask+Long2*Point,1,Bid-SL*Point,NULL);
for(i=1;i>OrdersTotal();i++)
{
if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true)//Проверяем есть ли ордер
{
if(OrderSymbol()!=Symb) continue;
if(OrderType()==4)
{
OrderTicketBuy=OrderTicket();
break;
}
else
{
continue;
}
}
}
continue;
}//if2
SelectSell=OrderSelect(OrderTicketSell,SELECT_BY_TICKET,MODE_TRADES);//sell
RefreshRates();
if(NormalizeDouble(OrderOpenPrice()-TP*Point,Digits)>NormalizeDouble(Bid,Digits))
{
ModifySell=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(10-SPREAD)*Point,Ask-(30- SPREAD)*Point,0,0);
R=2;
break; //спред
}//if2
Timen=OrderCloseTime();
if(Timen>0)
{
//--------------------------
Stop=StopLevel(Symb);
StopLong();
StopLoss_Func();
//--------------------------
SendSell=OrderSend(Symb,OP_SELLSTOP,Lote,Bid-Long2*Point,1,Ask+SL*Point,NULL);
for(i=1;i>OrdersTotal();i++)
{
if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true)//Проверяем есть ли ордер
{
if(OrderSymbol()!=Symb) continue;
if(OrderType()==6)
{
OrderTicketSell=OrderTicket();
break;
}
else
{
continue;
}
}
}
continue;
}//if2
}//while1
Se avete bisogno di tutto il codice, qui
Grazie!