Dipende da qual è lo scopo di catturare l'aggiornamento. Che ne dite di riempire troppo l'array?
Cosa importa quale sia lo scopo? La domanda è perché un evento così ovvio sia così difficile da catturare, dato che ci sono un sacco di altre proprietà meno usate e necessarie. In questo caso, l'obiettivo è la notifica (allarme).
Che differenza fa quale sia l'obiettivo? La domanda è perché un evento così ovvio è così difficile da catturare, anche se ci sono molte altre proprietà meno usate e necessarie. In questo caso, l'obiettivo è la notifica (allarme).
Quindi è questo evento ovvio che viene evidenziato nel tipo di transazione. Prova la biblioteca di Trishkin in 58 articoli. Forse ha una semplice opzione.
Sospetto che tenga il suo registro allo stesso modo.
Изменение открытого ордера. К данным изменениям относятся не только явные изменения со стороны клиентского терминала или торгового сервера, но также и изменение его состояния при выставлении (например, переход из состоянияORDER_STATE_STARTED aORDER_STATE_PLACED o daORDER_STATE_PLACED aORDER_STATE_PARTIAL, ecc.)
Mi basterebbe sapere che questo non è il primo ORDER_STATE_PLACED su un particolare biglietto d'ordine.
Risulta che due TRADE_TRANSACTION_ORDER_UPDATE arrivano quando viene effettuato il primo ordine. Ecco, e il terzo mi starebbe già bene come cambiamento, che nel mio caso è solo un cambiamento di prezzo. O il secondoORDER_STATE_PLACED.
Приказы на проведение торговых операций оформляются ордерами. Каждый ордер имеет множество свойств для чтения, информацию по ним можно получать с помощью функций Идентификатор позиции, который ставится на ордере при его исполнении. Каждый исполненный ордер порождает сделку, которая открывает новую или изменяет уже существующую позицию...
Seguito l'esempio MT4 "STRINGS: ASCII CHARACTERS TABLE AND USE"
//+------------------------------------------------------------------+//| StringLowerCase |//+------------------------------------------------------------------+string StringLowerCase(string str)
{
string s = str;
int lenght = StringLen(str) - 1, symbol;
while(lenght >= 0)
{
symbol = StringGetChar(s, lenght);
if((symbol > 64 && symbol < 91) || (symbol > 191 && symbol < 224))
s = StringSetChar(s, lenght, symbol + 32);// тут possible loss of data due to type conversionelseif(symbol > -65 && symbol < -32)
s = StringSetChar(s, lenght, symbol + 288);// тут possible loss of data due to type conversion
lenght--;
}
return(s);
}
//+------------------------------------------------------------------+//| StringUpperCase |//+------------------------------------------------------------------+string StringUpperCase(string str)
{
string s = str;
int lenght = StringLen(str) - 1, symbol;
while(lenght >= 0)
{
symbol = StringGetChar(s, lenght);
if((symbol > 96 && symbol < 123) || (symbol > 223 && symbol < 256))
s = StringSetChar(s, lenght, symbol - 32);// тут possible loss of data due to type conversionelseif(symbol > -33 && symbol < 0)
s = StringSetChar(s, lenght, symbol + 224);// тут possible loss of data due to type conversion
lenght--;
}
return(s);
}
Se non ti dispiace, per favore aiutami a sistemarlo...
Salve. Ho scritto una funzione che controlla le condizioni per entrare in una posizione.
Il problema è che se la condizione (evidenziata in giallo) non è soddisfatta - la funzione non termina ma passa alla condizione successiva. Così, il segnale non funziona correttamente.
Cosa si dovrebbe fare per far sì che la funzione smetta di funzionare quando una delle condizioni non è soddisfatta - immediatamente dopo la condizione errata?
bool BuySignal_new()
{
double Sig_Up[]; // динамический массив для хранения значений индикатора на покупку для каждого бараdouble Sig_Down[]; // динамический массив для хранения значений индикатора на продажу для каждого бараArraySetAsSeries (Sig_Up,true); // устанавливаем индексацию как в таймсерии ( т.е. 5,4,3,2,1,0) в динамич. массиве для индикатораArraySetAsSeries (Sig_Down,true); // устанавливаем индексацию как в таймсерии ( т.е. 5,4,3,2,1,0) в динамич. массиве для индикатораResetLastError();
double close = NormalizeDouble(iClose(_Symbol,_Period,1),Digits());
double close_1 = NormalizeDouble(iClose(_Symbol,_Period,0),Digits());
double Bid=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),Digits());
if(CopyBuffer(Handle_stepma_line,0,1,5,Sig_Up)==5 && CopyBuffer(Handle_stepma_line,1,1,4,Sig_Down)==4 )
{
Print("Данные скопированы. Ошибок нет.");
}
else
{
Print("Ошибка копирования. Нет данных");
return(false);
}
if (Sig_Up[1] < Sig_Down[1] && Sig_Up[0] > Sig_Down[0])
{
Print("условие 1 - ок");
}
else
{
Print("условие 1 НЕ выполненно");
return(false);
}
if (close < Sig_Up[1]&& Bid > Sig_Up[0])
{
Print ("условие 2 - ок");
return(true);
}
else
{
Print("условие 2 НЕ выполненно");
return(false);
}
Cosa dovrebbe essere fatto, in modo che se una delle condizioni della funzione non è soddisfatta - l'intera funzione terminerà, immediatamente dopo la condizione errata?
Rimuovi la ramificazione per altro, puoi provare in questo modo:
if(CopyBuffer(Handle_stepma_line, 0, 1, 5, Sig_Up) !=5)
{
Print("Ошибка копирования. Нет данных");
return(false);
}
if(CopyBuffer(Handle_stepma_line, 1, 1, 4, Sig_Down) !=4)
{
Print("Ошибка копирования. Нет данных");
return(false);
}
if(!(Sig_Up[1] < Sig_Down[1] && Sig_Up[0] > Sig_Down[0]))
{
Print("условие 1 НЕ выполненно");
return(false);
}
if (!(close < Sig_Up[1] && Bid > Sig_Up[0]))
{
Print("условие 2 НЕ выполненно");
return(false);
}
//--- если дошли сюда, то все условия выполненыreturn(true);
Dipende da qual è lo scopo di catturare l'aggiornamento. Che ne dite di riempire troppo l'array?
Cosa importa quale sia lo scopo? La domanda è perché un evento così ovvio sia così difficile da catturare, dato che ci sono un sacco di altre proprietà meno usate e necessarie. In questo caso, l'obiettivo è la notifica (allarme).
Che differenza fa quale sia l'obiettivo? La domanda è perché un evento così ovvio è così difficile da catturare, anche se ci sono molte altre proprietà meno usate e necessarie. In questo caso, l'obiettivo è la notifica (allarme).
Quindi è questo evento ovvio che viene evidenziato nel tipo di transazione. Prova la biblioteca di Trishkin in 58 articoli. Forse ha una semplice opzione.
в 58 ми статьяхBeh, grazie ))
Sospetto che tenga il suo registro allo stesso modo.
Mi basterebbe sapere che questo non è il primo ORDER_STATE_PLACED su un particolare biglietto d'ordine.
Risulta che due TRADE_TRANSACTION_ORDER_UPDATE arrivano quando viene effettuato il primo ordine. Ecco, e il terzo mi starebbe già bene come cambiamento, che nel mio caso è solo un cambiamento di prezzo. O il secondoORDER_STATE_PLACED.
Se non ti dispiace, per favore aiutami a sistemarlo...
Ho fatto l'esempio di MT4 "STRINGS: ASCII CHARACTERS TABLE AND HIS USE"
Se non ti dispiace, per favore aiutami a sistemarlo...
StringSetChart() bool restituisce un bool. E lo stai assegnando a una variabile stringa... Se questa è la domanda.
Salve. Ho scritto una funzione che controlla le condizioni per entrare in una posizione.
Il problema è che se la condizione (evidenziata in giallo) non è soddisfatta - la funzione non termina ma passa alla condizione successiva. Così, il segnale non funziona correttamente.
Cosa si dovrebbe fare per far sì che la funzione smetta di funzionare quando una delle condizioni non è soddisfatta - immediatamente dopo la condizione errata?
Cosa dovrebbe essere fatto, in modo che se una delle condizioni della funzione non è soddisfatta - l'intera funzione terminerà, immediatamente dopo la condizione errata?
Rimuovi la ramificazione per altro, puoi provare in questo modo:
rimuovere la ramificazione dall'altro, si può provare in questo modo:
Grazie, farò una prova.