[ARCHIVIO]Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non posso andare da nessuna parte senza di te - 5. - pagina 313

 
hoz:

Come fare in modo che quando un parametro di tendenza viene passato a questa funzione, che sarà responsabile di passare la presunta tendenza principale al momento, il calcolo sarà basato su questo parametro.

Cioè, se trend == al ribasso, la funzione nel ciclo era come ora, e setrend == al rialzo, l' Open[i ] e il Close[i] erano scambiati nel ciclo, in modo che le condizioni fossero osservate. Perché in questo caso il prezzo di chiusura della barra sarà inferiore al prezzo di apertura e la differenza sarà meno.


bool trend;

if ((2*trend-1)*Δ=>const) cnt++;
if ((2*trend-1)*Δ<const) cnt=0;
In questo caso2*trend-1assume i valori +1 e -1, cioè se trend=vero sarà al rialzo e trend=falso sarà al ribasso mentre Δ sarà rispettivamente preso con segno giusto o sbagliato. Questo è solo un esempio di dove la matematica sostituisce il se.
 

gyfto, lo script di prova del kit funziona per te?

Io l'avrei fatto:

//в шапке
#include <SharedMemoryMT4.mqh>
//в инит. Создание и открытие не обязательно. Эти функции для ускорения работы с памятью.
MemoryCreate(1, "", NULL, -1, "ind", 60*GlobalVariableGet("ADXBars"));
// Вариант более быстрый, чем выше:
MemoryCreateProjection(1, "", NULL, -1, "ind", 60*GlobalVariableGet("ADXBars"));

//в деинит
MemoryCloseName(1, "", "ind");
//в старт вместо 
for(; i<Σ; i++) MemoryWriteInt(1, "", -1, "ind", i * 4, iBars(sn, 1));//ind[i]=iBars(sn, 1);
#property show_inputs
#include <SharedMemoryMT4.mqh>
extern int x;//сколько секунд назад с данного момента прикрепления смотрим значения TOLHCV

int init()
  {
//   MemoryOpen(1, "", -1, "ind"); // Это не требуется.
   return(0);
  }
int start()
  {
   //MemoryReadInt(1, "", -1, "ind", i) это ind[i], GlobalVariableGet("final") это последний элемент в массиве, а ф-ла выглядит так: n=ind[final]-ind[final-x]+1
   int n=MemoryReadInt(1, "", -1, "ind", GlobalVariableGet("final"))-MemoryReadInt(1, "", -1, "ind", GlobalVariableGet("final")-x)+1;
   Alert(TimeToStr(TimeCurrent(),TIME_SECONDS), ": Time=", TimeToStr(Time[n], TIME_SECONDS), ", Open=", Open[n], ", High=", High[n], ", Low=", Low[n], ", Close=", Close[n], ", Volume=", Volume[n]);
   return(0);
  }

Il resto è corretto. Non è entrato solo nel protocollo di trasferimento dati.

La creazione, l'apertura e l'allocazione della memoria sono opzionali. Queste funzioni servono a velocizzare la gestione della memoria. Per il funzionamento più semplice della libreria, avete bisogno solo delle funzioni di lettura e scrittura. La biblioteca farà il resto. Inoltre, potete leggere prima di scrivere. La memoria della dimensione richiesta sarà allocata e la funzione restituirà zero. Dal momento che non c'è ancora nulla.

 

Zhunko, non credo. Comment() non fa output, scrive solo nel log, nel registro:

15:51:13 Check_SharedMemoryMT4.dll AUDUSD,M1 inputs: Area=1; InitPrefix=""; UserGlobal=25; UserTerminal=50; UserWindow=100; CheckWriteRead=false; CheckWrite=false; CheckRead=false; CheckGeneral=false
CheckProjection=false; CheckClose=false; NamePrefix="Check"; NameMemory0="CheckMemory0"; NameMemory1="CheckMemory1"; NameMemory2="CheckMemory2"; NameMemory3="CheckMemory3"; NameMemory4="Memory4"
Index=-1; StartByte=0; MemorySize=64000; bValue=true; cValue=123; ucValue=255; shValue=32100; ushValue=65535; nValue=2147012345; fValue=1234.56789012; dValue=1234.56789012; sValue0="Контроль = 1234.56789"
sValue1="Контроль = 9876.54321"; sValue2="Привет мир!!!"; sValue3="Миру мир!"; sValue4="Неправильное  имя";

È tutto su una linea, l'ho spostato qui così non c'è una larghezza anormale dello schermo.

 
gyfto:

Zhunko, non credo. Comment() non fa output, scrive solo nel log, nel registro:

È tutto su una linea, l'ho spostato qui così non c'è una larghezza anormale dello schermo.

Date un'occhiata al video. Fate esattamente lo stesso. Se non funziona, troveremo una soluzione. Per me funziona.
 
Probabilmente sto per vincere un concorso per l'errore più stupido. Non avevo dichiarato la variabile ADXBars GV, quindi ho scritto "errore di metodo". Inoltre non c'era alcun allineamento sul confine dell'int. Ma l'allarme emette ancora tutti zeri, con o senza allineamento. Guarderò il video e cercherò di capirlo da solo prima. Se fallisco, cercheremo di risolverlo insieme.
 

TarasBY artmedia70 hoz

Grazie signori ufficiali!

 
CYBOPOB:

TarasBY artmedia70 hoz

Grazie signori ufficiali!

Ti sei sparato? :)))
 
artmedia70:
Cosa, ti sei sparato? :)))


Due volte 8-[
 

Ciao, per favore aiutami su questo argomento:

https://www.mql5.com/ru/forum/144634

Grazie mille!

 

Anch'io ho avuto il fottuto errore. In effetti, non c'è nessuna logica. Per aprire un ordine pendente secondohttps://book.mql4.com/ru/appendix/limits, il prezzo di apertura deve essere inferiore al Bid (per vendere) o superiore all'Ask (per comprare). Sto facendo come richiesto.

//+-------------------------------------------------------------------------------------+
//| Открытие длинной позиции                                                            |
//+-------------------------------------------------------------------------------------+
bool OpenBuy()
{
   int ticket = -1;
   double OOP = High[1] + i_thresholdToUp * pt;
   pr ("ND(OOP) = " + ND(OOP) + " ; Ask = " + Ask);

   if (ND(OOP) > Ask)
       ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.1, ND(OOP), 3, 0, 0, NULL, i_magic, 0, CLR_NONE);
   else pr ("Ордер послать не удалось " + GetLastError());
   
   if (ticket > 0)
   {
       lastBarTime = Time[0];               // На текущем баре все необходимые действия..
                                            // .. успешно выполнены
       return (true);
   }
}

Di tanto in tanto ottengo 0 e 130 errori. Anche se 130 è un errore di stop sbagliato, che può accadere durante la modifica, ma non durante l'apertura dell'ordine.

Nella schermata la situazione e la stampa visualizzata utilizzando la funzione pr.

Errore di stop mal posizionato

Si prega di consigliare come sbarazzarsi di questo bug. Sono davvero stufo di questo errore. Logicamente, non è affatto in tema.

Motivazione: