Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 550

 
Alexandr24:
Ho bisogno di aiuto per trovare il valore massimo dell'indicatore N per il giorno precedente; ricevo i dati attraverso iCustom, ma è un blocco. Penso che sia fatto attraverso ArrayMaximum, ma come trovare il valore

Non riesco a capire come inserire iCustom lì dentro, ma non riesco a pensare ad altre opzioni.



1. Trova il numero di barra all'inizio del giorno precedente, trova il numero di barra alla fine per.

2. Farei un loop da un numero all'altro e calcolerei il massimo.

Naturalmente potete usare ArrayMaximum, ma dopo il primo passo.

 
Per quanto riguarda i proxy, se qualcuno ha bisogno di IP veramente funzionanti, posso consigliare http://buy.fineproxy.org/ io stesso per molto tempo ho comprato indirizzi lì, tutto funziona bene e c'è la possibilità di un periodo di prova!
 

Scusa per l'inondazione, te lo chiedo di nuovo.

Potete suggerire un indicatore di interesse aperto gratuito? Grazie in anticipo!

 
GSB:

Non si possono scrivere codici così distrattamente :)

Vai a Comment("USDCADAsk = ",USDCADAsk); seguito da USDCADAsk = DoubleToString(MarketInfo("USDCAD",MODE_ASK),usdcaddigits); USDCADAsk è dichiarato come doppio e tu ci metti una stringa,

e poi Digits.... di nuovo ^) e Punto

Dovete cercare voi stessi tali errori, nessuno li aggiusterà per voi così come il commercio! Il compilatore genera 28 errori e voi mettete la demo nel trading. Avresti voluto usare soldi veri, ma il mercato ti avrebbe corretto!

Di chi è il Bid Ask?


Corretto


Si è scoperto che non c'era bisogno di usare variabili aggiuntive e quindi non c'è bisogno di normalizzare, dovrebbe essere così.
OrderSend("USDCAD",OP_BUY,Lot,MarketInfo("USDCAD",MODE_ASK),slip,0,0,"USDCAD",magic[0],0,Red);
 
Example2:

Si è scoperto che non c'era bisogno di usare variabili aggiuntive e quindi non c'è bisogno di normalizzare, dovrebbe essere così.

OrderSend("USDCAD",OP_BUY,Lot,MarketInfo("USDCAD",MODE_ASK),slip,0,0,"USDCAD",magic[0],0,Red);

In primo luogo, tu stesso hai provato a visualizzarli sullo schermo per controllare, che ha portato a errori, e in secondo luogo, la normalizzazione è auspicabile e l'ordine di impostazione prezzo e TP, SL. Se il prezzo non è normalizzato, può causare errori. Questa è la regola e non dobbiamo infrangerla. Vedere esempi e analizzare perché questo è il caso e non il contrario, ad esempio https://book.mql4.com/ru/samples/shared
 
Ciao, potresti dirmi come aggiungere, per esempio, il 23% a OrderOpenPrice? Se sapete che OrderOpenPrice è già 77%. Divido per 77, moltiplico per 23 e ottengo 7 punti invece di 31. Ecco una linea di codice se (MarketInfo-OrderOpenPrice()>OrderOpenPrice()/50*Percent*Point). Questo è un trasferimento a Breakeven, ma non in punti, ma in punti percentuali. Grazie in anticipo!
 
vidnab:
Ciao, se non ti dispiace dirmi come aggiungere, ad esempio, il 23% a OrderOpenPrice? Se sapete che OrderOpenPrice è già 77%. Divido per 77, moltiplico per 23 e ottengo 7 punti invece di 31. Ecco una linea di codice se (MarketInfo-OrderOpenPrice()>OrderOpenPrice()/50*Percent*Point). Questo è un trasferimento a Breakeven, ma non in punti, ma in punti percentuali. Grazie in anticipo!


Ho comprato centomila euro a 50 rubli, poi aggiungo il 23% al prezzo di acquisto.

Per il tuo caso, devi stendere il codice per intero. Anche se se volete solo portarlo al 100%, dividete per 0,77.

 

Grazie per la vostra risposta. Ecco tutto il codice

//+----------------------------------------------------------------------------+
//| e-MovingInWL2.mq4 |
//| |
//| Kim Igor V. aka KimIV |
//| http://www.kimiv.ru |
//| |
//| 27.10.2008 Il consulente sposta lo stop al pareggio.
//+----------------------------------------------------------------------------+
#proprietà copyright "Kim Igor V. aka KimIV"
#proprietà link "http://www.kimiv.ru"

//------- Parametri esterni dell'Expert Advisor -----------------------------------------+
extern string _P_Expert = "---------- parametri EA";
extern bool AllSymbols = True; // Guarda le posizioni di tutti i simboli
extern int Magic = -1; // Identificatore di posizione
extern int LevelProfit = 25; // livello di profitto in punti
extern int LevelWLoss = 1; // Livello di pareggio in punti
extern bool ShowComment = True; // Mostra il commento

//------- Parametri di esecuzione degli ordini di compravendita ------------------------------+
extern string _P_Performance = "---------- Parametri di esecuzione";
extern bool UseSound = True; // Usa il segnale sonoro.
extern string SoundSuccess = "expert.wav"; // Suono di successo
extern string SoundError = "timeout.wav"; // suono di errore.
extern inttern NumberOfTry = 2; // Numero di tentativi

//------- Variabili globali dell'Expert Advisor -------------------------------------+
bool gbDisabled = False; // Flag di EA bloccato
bool gbNoInit = False; // Flag di inizializzazione fallita
colore clModifyBuy = Aqua; // colore clModifyBuy icona
colore clModifySell = Tomato; // colore dell'icona di modifica della vendita

//------- Collegamento di moduli esterni -----------------------------------------+
#include <stdlib.mqh>


//+----------------------------------------------------------------------------+
//| |
//| FUNZIONI PREDEFINITE |
//| |
//+----------------------------------------------------------------------------+
//| funzione di inizializzazione dell'esperto |
//+----------------------------------------------------------------------------+
void init() {
gbNoInit=False;
se (!IsTradeAllowed()) {
Messaggio("Affinché l'EA funzioni correttamente, è necessario "+
"Permettere all'EA di commerciare");
gbNoInit=True; return;
}
se (!IsLibrariesAllowed()) {
Messaggio("Per far sì che l'EA funzioni correttamente, è necessario "+
"Permettere l'importazione da EA esterni");
gbNoInit=True; return;
}
se (!IsTesting()) {
se (IsExpertEnabled()) Message("The Expert Advisor will be started with the next tick");
else Message("Il pulsante "Consenti l'avvio degli EA{") viene rilasciato;
}
start();
}

//+----------------------------------------------------------------------------+
//| funzione di deinizializzazione esperto |
//+----------------------------------------------------------------------------+
void deinit() {
se (!IsTesting()) Commento(");
}

//+----------------------------------------------------------------------------+
//| funzione di inizio esperto |
//+----------------------------------------------------------------------------+
void start() {
se (gbDisabled) {
Message("Errore critico! EA STOPPED!"); return;
}
se (gbNoInit) {
Message("EA initialization failed!"); return;
}
se (ShowComment) {
Commento(IIFs(AllSymbols, "AllSymbols ", ")
, "Magic="+IIFs(Magic<0, "Any", DoubleToStr(Magic, 0))+" "
, "LevelProfit="+DoubleToStr(LevelProfit, 0)+"n "
, "LevelWLoss="+DoubleToStr(LevelWLoss, 0)+"n "
);
} else Comment(");

stringa sy=IIFs(AllSymbols, "", NULL);
MovingInWL(sy, -1, Magic);
}


//+----------------------------------------------------------------------------+
//| |
//| FUNZIONI UTENTE |
//| |
//+----------------------------------------------------------------------------+
//| Autore: Kim Igor V. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Versione : 01.09.2005 |
//| Descrizione: restituisce il nome dell'operazione commerciale
//+----------------------------------------------------------------------------+
//| Parametri: ||
//| op - identificatore dell'operazione commerciale |
//+----------------------------------------------------------------------------+
stringa GetNameOP(int op) {
interruttore (op) {
caso OP_BUY : ritorno("Compra");
caso OP_SELL : return("Sell");
caso OP_BUYLIMIT : return("BuyLimit");
caso OP_SELLLIMIT : return("SellLimit");
caso OP_BUYSTOP : return("BuyStop");
caso OP_SELLSTOP : return("SellStop");
default : return("Operazione sconosciuta");
}
}

//+----------------------------------------------------------------------------+
//| Autore: Kim Igor V. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Versione : 18.07.2008 |
//| Descrizione : Restituisce uno dei due valori a seconda della condizione.
//+----------------------------------------------------------------------------+
colore IIFc(bool condition, colore ifTrue, colore ifFalse) {
se (condizione) return(ifTrue); altrimenti return(ifFalse);
}

//+----------------------------------------------------------------------------+
//| Autore: Kim Igor V. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Versione : 01.02.2008 |
//| Descrizione : Restituisce uno dei due valori a seconda della condizione.
//+----------------------------------------------------------------------------+
stringa IIFs(bool condition, string ifTrue, string ifFalse) {
se (condizione) return(ifTrue); altrimenti return(ifFalse);
}

//+----------------------------------------------------------------------------+
//| Autore: Kim Igor V. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Versione : 01.09.2005 |
//| Descrizione: visualizzazione di un messaggio nel commento e nel log
//+----------------------------------------------------------------------------+
//| Parametri: |
//| m - testo del messaggio |
//+----------------------------------------------------------------------------+
void Message(string m) {
Commento(m);
se (StringLen(m)>0) Print(m);
}

//+----------------------------------------------------------------------------+
//| Autore: Kim Igor V. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Versione : 28.11.2006 |
//| Descrizione: modifica di un ordine preselezionato.
//+----------------------------------------------------------------------------+
//| Parametri: |
//| pp - livello di prezzo dell'ordine |
//| sl - livello di prezzo dello stop |
//| tp - livello di prezzo del takeout |
//| ex - data di scadenza |
//+----------------------------------------------------------------------------+
void ModifyOrder(double pp=-1, double sl=0, double tp=0, datetime ex=0) {
bool fm;
colore cl=IIFc(OrderType()==OP_BUY
|| OrderType()==OP_BUYLIMIT
|| OrderType()==OP_BUYSTOP, clModifyBuy, clModifySell);
doppio op, pa, pb, os, ot;
int dg=MarketInfo(OrderSymbol(), MODE_DIGITS), er, it;

if (pp<=0) pp=OrderOpenPrice();
if (sl<0 ) sl=OrderStopLoss();
if (tp<0 ) tp=OrderTakeProfit();

pp=NormalizeDouble(pp, dg);
sl=NormalizeDouble(sl, dg);
tp=NormalizeDouble(tp, dg);
op=NormalizeDouble(OrderOpenPrice(), dg);
os=NormalizeDouble(OrderStopLoss(), dg);
ot=NormalizeDouble(OrderTakeProfit(), dg);

se (pp!=op || sl!=os || tp!=ot) {
for (it=1; it<=NumeroOfTry; it++) {
if (!IsTesting() && (!IsExpertEnabled() || IsStopped())) break;
mentre (!IsTradeAllowed()) Dormire(5000);
RefreshRates();
fm=OrderModify(OrderTicket(), pp, sl, tp, ex, cl);
se (fm) {
if (UseSound) PlaySound(SoundSuccess); break;
} else {
er=GetLastError();
se (UseSound) PlaySound(SoundError);
pa=MarketInfo(OrderSymbol(), MODE_ASK);
pb=MarketInfo(OrderSymbol(), MODE_BID);
Print("Error(",er,") che modifica l'ordine:",ErrorDescription(er),", try ",it);
Print("Ask=",pa," Bid=",pb," sy=",OrderSymbol(),
" op="+GetNameOP(OrderType())," pp=",pp," sl=",sl," tp=",tp);
Dormire(1000*10);
}
}
}
}

//+----------------------------------------------------------------------------+
//| Autore: Kim Igor V. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Versione : 23.04.2009 |
//| Descrizione: Sposta il livello di stop su lossless |
//+----------------------------------------------------------------------------+
//| Parametri: |
//| sy - nome dello strumento ( "" - qualsiasi simbolo, |
//| NULL - simbolo corrente) |
//| op - operazione ( -1 - qualsiasi posizione) |
//| mn - MagicNumber ( -1 - qualsiasi magia) |
//+----------------------------------------------------------------------------+
void MovingInWL(string sy="", int op=-1, int mn=-1) {
doppio po, pp;
int i, k=OrdersTotal();

if (sy=="0") sy=Symbol();
per (i=0; i<k; i++) {
se (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
se ((OrderSymbol()==sy || sy==") && (op<0 || OrderType()==op)) {
se (mn<0 || OrderMagicNumber()==mn) {
po=MarketInfo(OrderSymbol(), MODE_POINT);
se (OrderType()==OP_BUY) {
se (OrderStopLoss()-OrderOpenPrice()<LevelWLoss*po) {
pp=MarketInfo(OrderSymbol(), MODE_BID);
se (pp-OrderOpenPrice()>LevelProfit*po) {
ModifyOrder(-1, OrderOpenPrice()+LevelWLoss*po, -1);
}
}
}
se (OrderType()==OP_SELL) {
se (OrderStopLoss()==0 || OrderOpenPrice()-OrderStopLoss()<LevelWLoss*po) {
pp=MarketInfo(OrderSymbol(), MODE_ASK);
se (OrderOpenPrice()-pp>LevelProfit*po) {
ModifyOrder(-1, OrderOpenPrice()-LevelWLoss*po, -1);
}
}
}
}
}
}
}
}
//+----------------------------------------------------------------------------+

 
Questo è il codice di Igor Kim, ma non riesco a contattarlo. Se puoi aiutare!
 
GSB:

In primo luogo, tu stesso hai provato a visualizzarli sullo schermo per controllare, che ha portato a errori, e in secondo luogo, la normalizzazione è auspicabile e l'ordine di impostazione prezzo e TP, SL. Se il prezzo non è normalizzato, può portare ad errori. Questa è la regola e non dobbiamo infrangerla. Vedere esempi e analizzare perché questo è il caso e non il contrario, ad esempio https://book.mql4.com/ru/samples/shared

Non l'ho scritto per rimproverare, ma solo per far vedere agli altri. Grazie per il vostro tempo.
Motivazione: