[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 575

 

a Armen

Questo significa che le funzioni non sono state utilizzate nell'EA. Scrivi qualcosa come

if (CountBuys()>2 && CountSells()>2) {\\действия}

 
Per favore, ditemi se è possibile ritirare i fondi in eccesso, per esempio in una cassetta di sicurezza, se superano il deposito originale mentre l'EA è in funzione e lasciarli entro il deposito originale, senza chiudere le posizioni aperte?
 
link1:


Vinin, grazie mille per la tua risposta. Ma onestamente non capisco perché a ask1,ask2,ask3 sono assegnati i valori 1,-1,-1. cosa significano. Sono un principiante, non ci capisco molto. Vi sarò molto grato).


Vengono assegnati valori che non saranno mai uguali al prezzo.

 
yosuf:
Posso ritirare i fondi in eccesso, per esempio nella cassetta di sicurezza, se superano il deposito iniziale durante l'operazione EA e lasciarli entro il deposito iniziale senza chiudere le posizioni aperte?

Su MT5 si può vedere. Usare TesterWithdrawal() per simulare il ritiro dei profitti

Questo non è possibile su MT4

 

Ciao!

Sto scrivendo un indicatore che conta il numero di punti in cui il prezzo si è mosso su e giù durante un tick.
Cosa c'è di sbagliato nel codice e dov'è l'errore, per favore consigliatemi!

#property indicator_chart_window

extern int LimitBar = 10;
extern int cegl = 6;
extern string Shrift = "Arial Black";
extern bool delete = true;



double old_price, max_price, sum_pip_sell, sum_pip_bay, new_pip_bay, new_pip_sell, old_pip_bay, old_pip_sell;
datetime ctat_SB =0;

int init() {return(0);}

int deinit() {
if (delete == true) {
GetDellName(); 
}
ObjectsDeleteAll(0, OBJ_TREND);
return(0);
}

int start() {
double price;
string name_4,name_b;
int i=0;
int limit, pip; 
double delta; 
int counted_bars=IndicatorCounted(); 
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
if(ctat_SB==0) ctat_SB=Time[0];

if(limit>0) limit=0;

for(i=limit; i>=0; i--) {
if(old_price==0) old_price=Close[i];

if(iBarShift(NULL,0,ctat_SB)-iBarShift(NULL,0,Time[i])>=LimitBar) { ' счетчик баров для LimitBar

sum_pip_sell =0;
sum_pip_bay = 0; 
new_pip_bay = 0;
new_pip_sell = 0;
old_pip_bay = 0;
old_pip_sell = 0;

} 

price = Close[i];
if(price > max_price) max_price=price; 

delta = price - old_price; ' разница пунктов
pip = delta*10000; ' округляем до целого

//---- Каунт плюс 

if(delta>=0) { ' условие для ап пунктов

new_pip_bay = pip;
sum_pip_bay = old_pip_bay+new_pip_bay;
old_pip_bay = sum_pip_bay; 

}
//---- Каунт минус
if(delta<0) { ' условие для даун пунктов

new_pip_sell = MathAbs(pip);
sum_pip_sell = old_pip_sell+new_pip_sell;
old_pip_sell = sum_pip_sell;

} 
//----
old_price=price;

//---- размещаем счетчик на графике
name_4 = "TPM_ 4 "+TimeToStr(ctat_SB);
SetText(name_4+"sell",DoubleToStr(sum_pip_sell,0), ctat_SB+60*Period()*2, max_price+(Ask-Bid)*6, Blue,12); 
SetText(name_4+"bay",DoubleToStr(sum_pip_bay,0),ct at_SB-60*Period()*2, max_price+(Ask-Bid)*4.5, Red,12); 

} 

return(0);
}
void SetText(string name,string text,datetime t1, double p1, color c, int size) // --- отображение текста
{
if (ObjectFind(name)!=-1) ObjectDelete(name);
ObjectCreate(name,OBJ_TEXT,0,0,0,0,0); 
ObjectSet(name, OBJPROP_TIME1 , t1);
ObjectSet(name, OBJPROP_PRICE1, p1); 
ObjectSetText(name,text,cegl,Shrift,c);
}

//+------------------------------------------------------------+
void GetDellName (string name_n = "TPM_ ") // -- удаление меток с графика
{
string vName;
for(int i=ObjectsTotal()-1; i>=0;i--)
{
vName = ObjectName(i);
if (StringFind(vName,name_n) !=-1) ObjectDelete(vName);
} 
} 
//----

Grazie in anticipo!


 
yosuf:
Per favore, ditemi se è possibile ritirare i fondi in eccesso, per esempio nella cassetta di sicurezza, se superano il deposito iniziale durante il lavoro dell'EA e lasciarli entro il deposito iniziale, senza chiudere le posizioni aperte?

Permettere il trading dell'Expert Advisor solo con un deposito pari al deposito iniziale.

Ricorda la dimensione del deposito iniziale e prima di ogni apertura di una posizione controlla il suo lotto. Se il volume dell'affare supera il valore consentito - riduci il lotto o libera i fondi.

 
Fox_RM:

Ciao!

Sto scrivendo un indicatore che conta il numero di punti in cui il prezzo si è mosso su e giù durante un tick.
Cosa c'è di sbagliato nel codice e dov'è l'errore, per favore consigliatemi!

Grazie in anticipo!


Perché c'è così tanta roba?

Ricorda il prezzo del tick precedente. All'arrivo di un nuovo tick, conta la differenza di prezzo divisa per il punto e ricorda di nuovo quel prezzo come il prezzo del tick precedente.

 
artmedia70:

Perché c'è così tanta roba?

Ricorda il prezzo dell'ultimo tick. All'arrivo di un nuovo tick, conta la differenza di prezzo divisa per il punto e ricorda di nuovo quel prezzo come il prezzo del tick precedente.

Nelle condizioni per i punti AP e DAUN il codice è esattamente come prescritto, ma quando si visualizza l'indicatore sul grafico del prezzo, l'indicatore emette 0 per su e 0 per giù il numero di punti. Qual è il problema che non capisco!
 

Signori programmatori!

La priorità (e l'associatività) delle operazioni MQL4 corrisponde a C?

Non voglio abusare delle parentesi, ma la priorità delle operazioni non è menzionatada nessuna parte nella documentazione.

Questa non è una domanda oziosa. MQL4 è posizionato come un linguaggio simile al C. La parola chiave qui è DEFINITIVAMENTE. Se una cosa come il calcolo completo delle espressioni logiche è solo un allontanamento dallo standard C, allora la visibilità delle variabili definite in un blocco al di fuori di questo blocco è un grave errore nei canoni di programmazione.

Chissà fin dove può arrivare l'immaginazione degli sviluppatori di MQL4 :).

 
artmedia70:

Permettere il trading dell'Expert Advisor solo con un deposito pari al deposito iniziale.

Ricorda la dimensione del deposito iniziale e prima di ogni apertura di una posizione controlla il suo lotto. Se il volume dell'operazione supera la dimensione consentita - riducete il lotto o rilasciate i fondi.

Intendo qualcosa del genere: quando faccio trading su micro-real con 10k centesimi di deposito, posso ritirare i miei fondi in eccesso manualmente quando voglio durante il funzionamento dell'EA, o devo fermare l'EA, chiudere tutte le posizioni aperte e solo allora ritirare i fondi in eccesso? Faccio trading con un lotto fisso di 0,1. Come posso realmente implementare la tua raccomandazione: "Consenti all'Expert Advisor di fare trading solo con un deposito pari al deposito iniziale.