Wszystkie pytania dozwolone początkujących programistów
- siersciuch
- Pasjonat
- Posty: 407
- Rejestracja: 06 kwie 2010, 20:31
Dzieki, a
wytlumaczy mi ktoś te dwa parametry wskaźnika Zigzag ?
wytlumaczy mi ktoś te dwa parametry wskaźnika Zigzag ?
Kod: Zaznacz cały
ExtDeviation=5;
ExtBackstep=3;
jeżeli będziesz uparty, prawdopodobnie częściej odniesiesz sukces, niż doznasz porażki.
EA składa się z szablonu . Pusty szablon zawiera informacje dotyczące autora oraz trzy puste funkcje:
init() - funkcja ta jest wykonywana przy uruchamianiu systemu (tylko raz)
deinit() - funkcja ta jest wykonywana przy deaktywacji systemu (również tylko raz)
start() - jest to najważniejsza funkcja, wykonywana po otrzymaniu nowego ticku (nowej ceny)
Tak to wygląda od strony teoretycznej - bez odniesienia się do Twojego kodu się nie obędzie
init() - funkcja ta jest wykonywana przy uruchamianiu systemu (tylko raz)
deinit() - funkcja ta jest wykonywana przy deaktywacji systemu (również tylko raz)
start() - jest to najważniejsza funkcja, wykonywana po otrzymaniu nowego ticku (nowej ceny)
Tak to wygląda od strony teoretycznej - bez odniesienia się do Twojego kodu się nie obędzie
tutaj ten kod, moze bylby ktos tak mily i zerknal co jest nie tak ze nie startuje ponownie
Kod: Zaznacz cały
//-------------------------------------------------------------
// Etasoft Inc. Forex EA and Script Generator version 4.1 EA
//-------------------------------------------------------------
// Keywords: MT4, Forex EA builder, create EA, expert advisor developer
#property copyright "Copyright © 2011, Etasoft Inc. Forex EA Generator v4.1"
#property link "http://www.forexgenerator.com/"
#include <stdlib.mqh>
#include <WinUser32.mqh>
// exported variables
extern double SellLots8 = 0.1;
extern int SellStoploss8 = 20;
extern int SellTakeprofit8 = 40;
extern int PriceOffset8 = 20;
extern double BuyLots15 = 0.1;
extern int BuyStoploss15 = 20;
extern int BuyTakeprofit15 = 40;
extern int PriceOffset15 = 20;
// local variables
double PipValue=1; // this variable is here to support 5-digit brokers
bool Terminated = false;
string LF = "\n"; // use this in custom or utility blocks where you need line feeds
int NDigits = 4; // used mostly for NormalizeDouble in Flex type blocks
int ObjCount = 0; // count of all objects created on the chart, allows creation of objects with unique names
int current = 0;
bool Executed9 = false;
bool Executed5 = false;
int init()
{
NDigits = Digits;
if (false) ObjectsDeleteAll(); // clear the chart
Comment(""); // clear the chart
}
// Expert start
int start()
{
if (Bars < 10)
{
Comment("Not enough bars");
return (0);
}
if (Terminated == true)
{
Comment("EA Terminated.");
return (0);
}
OnEveryTick12();
}
void OnEveryTick12()
{
if (true == false && false) PipValue = 10;
if (true && (NDigits == 3 || NDigits == 5)) PipValue = 10;
IfOrderDoesNotExist7();
IfOrderDoesNotExist6();
}
void IfOrderDoesNotExist7()
{
bool exists = false;
for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType() == OP_SELLSTOP && OrderSymbol() == Symbol() && OrderMagicNumber() == 1)
{
exists = true;
}
}
else
{
Print("OrderSelect() error - ", ErrorDescription(GetLastError()));
}
if (exists == false)
{
ExecuteOnce9();
}
}
void ExecuteOnce9()
{
if (0 > 0)
{
Executed9 = false;
}
if (Executed9 == false)
{
Executed9 = true;
SellPendingOrder8();
}
}
void SellPendingOrder8()
{
int expire = TimeCurrent() + 60 * 0;
double price = NormalizeDouble(Ask, NDigits) - PriceOffset8*PipValue*Point;
double SL = price + SellStoploss8*PipValue*Point;
if (SellStoploss8 == 0) SL = 0;
double TP = price - SellTakeprofit8*PipValue*Point;
if (SellTakeprofit8 == 0) TP = 0;
if (0 == 0) expire = 0;
int ticket = OrderSend(Symbol(), OP_SELLSTOP, SellLots8, price, 0, SL, TP, "My Expert", 1, expire, Red);
if (ticket == -1)
{
Print("OrderSend() error - ", ErrorDescription(GetLastError()));
}
}
void IfOrderDoesNotExist6()
{
bool exists = false;
for (int i=OrdersTotal()-1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderType() == OP_BUYSTOP && OrderSymbol() == Symbol() && OrderMagicNumber() == 1)
{
exists = true;
}
}
else
{
Print("OrderSelect() error - ", ErrorDescription(GetLastError()));
}
if (exists == false)
{
ExecuteOnce5();
}
}
void ExecuteOnce5()
{
if (0 > 0)
{
Executed5 = false;
}
if (Executed5 == false)
{
Executed5 = true;
BuyPendingOrder15();
}
}
void BuyPendingOrder15()
{
int expire = TimeCurrent() + 60 * 0;
double price = NormalizeDouble(Ask, NDigits) + PriceOffset15*PipValue*Point;
double SL = price - BuyStoploss15*PipValue*Point;
if (BuyStoploss15 == 0) SL = 0;
double TP = price + BuyTakeprofit15*PipValue*Point;
if (BuyTakeprofit15 == 0) TP = 0;
if (0 == 0) expire = 0;
int ticket = OrderSend(Symbol(), OP_BUYSTOP, BuyLots15, price, 0, SL, TP, "My Expert", 1, expire, Blue);
if (ticket == -1)
{
Print("OrderSend() error - ", ErrorDescription(GetLastError()));
}
}
int deinit()
{
if (false) ObjectsDeleteAll();
}
Witam wszystkich,
pragnę się w moi pierwszym poście na tym forum zapytać odnośnie programowania w MQL4:
1) EA wykonuję się raczej w schematach, tak by inny programista w razie czego w nim się odnalazł, nachodzi mnie pytanie czy przestrzegając schematu można wykonywać ala kopiuj/wklej linijek kodów np.: buy limit w odpowiednim codo schematu miejsca? albo wkleić MM (money managmet
2) Za pomocą stron gdzie można stworzyć EA, np.: EA creator, to potrzeba znać dobrze język mql4 czy właśnie za pomocą tychże stron samemu można cosik potworzyć?
3) w kodzie na początku widnieje np.: int gi_228 = 0; i inne tego typu co to takiego i do czego to jest odniesienie??
Pozdrawiam i przy okazji pragnę życzyć wszystkiego najlepszego w nowym roku !
pragnę się w moi pierwszym poście na tym forum zapytać odnośnie programowania w MQL4:
1) EA wykonuję się raczej w schematach, tak by inny programista w razie czego w nim się odnalazł, nachodzi mnie pytanie czy przestrzegając schematu można wykonywać ala kopiuj/wklej linijek kodów np.: buy limit w odpowiednim codo schematu miejsca? albo wkleić MM (money managmet
2) Za pomocą stron gdzie można stworzyć EA, np.: EA creator, to potrzeba znać dobrze język mql4 czy właśnie za pomocą tychże stron samemu można cosik potworzyć?
3) w kodzie na początku widnieje np.: int gi_228 = 0; i inne tego typu co to takiego i do czego to jest odniesienie??
Pozdrawiam i przy okazji pragnę życzyć wszystkiego najlepszego w nowym roku !

1) Musiałbyś mieć dużo szczęścia, aby udało się Tobie wkleić kawałek EA do innego EA i wszystko zadziałało - jest to wręcz nie możliwe
2)Za pomocą tych stron można coś stworzyć
Jednak podstawy MQL4 pomogą Tobie zrozumieć kod i zasadę działania
3) int gi_228 = 0; - jest to definicja zmiennej gi_228 typu integer, której przypisano wartość 0 (więcej na ten temat znajdziesz np. tu : http://bossafx.pl/index.jsp?layout=fx_2 ... at_id=3134 ). Bez znajmości kodu całego programu nie można stwierdzić do czego wspomniana zmienna się odwołuje
2)Za pomocą tych stron można coś stworzyć

3) int gi_228 = 0; - jest to definicja zmiennej gi_228 typu integer, której przypisano wartość 0 (więcej na ten temat znajdziesz np. tu : http://bossafx.pl/index.jsp?layout=fx_2 ... at_id=3134 ). Bez znajmości kodu całego programu nie można stwierdzić do czego wspomniana zmienna się odwołuje
Aż tak uniwersalnych schematów nie ma.Dajman pisze:1) EA wykonuję się raczej w schematach, tak by inny programista w razie czego w nim się odnalazł, nachodzi mnie pytanie czy przestrzegając schematu można wykonywać ala kopiuj/wklej linijek kodów np.: buy limit w odpowiednim codo schematu miejsca? albo wkleić MM (money managmet
Czasem można jedną funkcję napisać na kilka sposobów. Dlatego istnieje coś takiego jak charakter programowania ( jak charakter pisma ), po którym można zozróżnić czy dany kod pisała ta sama osoba.
Jednego robota działającego w ten sam sposób można napisać na setki sposobów.
Więc nie ma czegoś takiego jak skopiowanie kawałka kodu i wklejenie go do innego EA tak, żeby to działało.
Wyjątkiem są pojedyncze funkcje, które umieszcz się na końcu kodu, ale ich wywłanie w kodzie to juz inna sprawa.
Solą życia jest kasa.