[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 42
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
I DoC hanno un limite al numero di scambi?
Alcuni hanno non solo un limite al numero di offerte, ma anche un limite al numero di richieste.
Sono proprio degli inventori! :-))
Gli altri rimangono aperti fino alla fine del test, anche se la chiusura condizionale di un ordine dovrebbe avvenire quando un altro viene aperto.
Un'altra domanda sugli errori 4051 e 134 quando si usa OrderClose(), cosa significano? Ho copiato le informazioni dal registro.
L'ultima opzione sembra aver funzionato più o meno bene. Anche se è possibile semplificare i calcoli
Per favore, consigliatemi! Come posso chiudere due ordini pendenti con la stessa magia, ma con lotto diverso.
int start()
{
double MyLastBullOpenPrice=0;
for(int Cnt=0;Cnt<OrdersTotal();Cnt++)
{
OrderSelect(Cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()==12345 && OrderType()==OP_BUY)
{
MyLastBullOpenPrice=OrderOpenPrice();
double Cena=OrderOpenPrice()+5*Point;
double Totalcena= Bid;
if (Totalcena>Cena)
{
if (OrdersTotal()>0)
{ for (int i=OrdersTotal()-1; i>=0; i--)
{ se (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{ if(OrderMagicNumber()==12345)
{ if(OrderDelete(OrderTicket())==true)
{
Print("Error = ",GetLastError()); return(0);
}
} } } }
}
}
return(MyLastBullOpenPrice);
}
Gli altri rimangono aperti fino alla fine del test, anche se la chiusura condizionale di un ordine dovrebbe avvenire quando un altro viene aperto.
Un'altra domanda sugli errori 4051 e 134 quando si usa OrderClose(), cosa significano? Ho copiato le informazioni dal registro.
134 - niente soldi, 4051 - cattivi parametri passati alla funzione.
Per quanto riguarda il punto - controlla che la variabile magick sia assegnata solo una volta, preferibilmente nella funzione init(), altrimenti, ogni ordine avrà il proprio magick e il risultato sarà qualcosa come quello che descrivi.
Per favore, aiutatemi ad aggiungere (o scrivere) una funzione di sostituzione dei caratteri in una stringa attraverso gli array.
Avere due array di caratteri:
string symbols1[] = {"a", "b", "c", "d"};string symbols2[] = {"1", "2", "3", "4"};
Ho provato a scrivere una funzione che sostituisse il testo badc con 2143, sulla base degli array, e si è rivelata come questa:
string ReplaceSymbolsInStr(string text){
string textMod[] ={""};
string symbols1[] = {"a","b","c","d"};
string symbols2[] = {"1","2","3","4"};
int textLen = StringLen(text);
for (int i1=0; i1<textLen; i1++)
{
string OneSymbol = StringSubstr(text,i1,1);
for (int i2=0; i2<ArraySize(symbols1); i2++)
{
if (symbols1[i2]==OneSymbol) int PosSymbolIn1array=i2;
}
return(-1);
string OneSymbolMod = symbols2[PosSymbolIn1array];
int NewArraySize = ArraySize(textMod)+1;
ArrayResize(textMod,NewArraySize);
textMod[i1]=OneSymbolMod;
string textNew;
textNew=StringConcatenate(textMod[1],textMod[2]...);//собрать массив в строку вообще не могу :(
return (textNew);
}
}
So che è sbagliato e non posso assolutamente assemblare l'array in una stringa. Per favore, aiutatemi.
Alcuni hanno non solo un limite al numero di offerte, ma anche un limite al numero di richieste.
Sono proprio degli inventori! :-))
Per favore, aiutatemi ad aggiungere (o scrivere) una funzione di sostituzione dei caratteri in una stringa attraverso gli array.
Avere due array di caratteri:
string symbols1[] = {"a", "b", "c", "d"};string symbols2[] = {"1", "2", "3", "4"}
Ho provato a scrivere una funzione che sostituisse il testo badc con 2143, sulla base degli array, finendo così:
string ReplaceSymbolsInStr(string text){
string textMod[] ={""};
string symbols1[] = {"a","b","c","d"};
string symbols2[] = {"1","2","3","4"};
int textLen = StringLen(text);
for (int i1=0; i1<textLen; i1++)
{
string OneSymbol = StringSubstr(text,i1,1);
for (int i2=0; i2<ArraySize(symbols1); i2++)
{
if (symbols1[i2]==OneSymbol) int PosSymbolIn1array=i2;
}
return(-1);
string OneSymbolMod = symbols2[PosSymbolIn1array];
int NewArraySize = ArraySize(textMod)+1;
ArrayResize(textMod,NewArraySize);
textMod[i1]=OneSymbolMod;
string textNew;
textNew=StringConcatenate(textMod[1],textMod[2]...);//собрать массив в строку вообще не могу :(
return (textNew);
}
}
So che è sbagliato e non posso assolutamente assemblare l'array in una stringa. Per favore, aiutatemi.
Si suppone che abbiate trovato l'indice del carattere nell'array di sostituzione, quindi perché creare un altro array?
Provate ad aggiungerlo ad una variabile di testo semplice nel primo ciclo:
stringa ReplaceSymbolsInStr(stringa testo)
{stringa symbols1[] = {"a", "b", "c", "d"};
stringa symbols2[] = {"1", "2", "3", "4"};
stringa textNew="";
int textLen = StringLen(testo);
for (int i1=0; i1<textLen; i1++)
{
string OneSymbol = StringSubstr(text,i1,1);
for (int i2=0; i2<ArraySize(symbols1); i2++)
{
if (symbols1[i2]==OneSymbol) {textNew = textNew + symbols2[ i2 ]; i2=ArraySize(symbols1) ; }
}
}
return (textNew);
}
Oppure è ancora più facile così:
stringa ReplaceSymbolsInStr(stringa testo)
{stringa symbols1[4] = {"a", "b", "c", "d"}; // dimensione dell'array per il numero di simboli in esso contenuti
stringa textNew="";
per (int i1=0; i1< StringLen(testo) ; i1++)
{
string OneSymbol = StringSubstr(text,i1,1);
for (int i2=0; i2<ArraySize(symbols1); i2++)
{
if (symbols1[i2]==OneSymbol )
{
textNew = textNew + (i2+1); // il numero del simbolo stesso è aggiunto al testo restituito
i2=ArraySize(symbols1) ; // completato il ciclo di ricerca
}
}
}
return (textNew);
}
Buona giornata!
Potresti per favore consigliare (o dare un link di esempio), come inviare i dati in formato csv automaticamente all'e-mail?
Grazie.