Autorius | Žinutė |
2013-05-01 02:55 #342224 | |
Vietoi kazkurio ask gal reik naudot bid?
|
|
2013-05-01 08:18 #342231 | |
ar ask ar bid nieko nepakeis, tik keliais pipsais pasislinks. Ask ar Bid svarbu kai TP/SL statomi minimaliais leistinais atstumais. manau čia esmė ne tame.
šiaip keista kad su 250*Point neveikia. koks instumentas (valiutų pora, metalas) ? turėtum atsižvelgt į tokį dalyką, kad Point ne visada reiškia pipsą. jei po kablelio yra 5 arba 3 ženklai, Point yra lygus 0,1 pipso. Tokiu atveju tavo pirmame kode buvę TP=100 ir SL=50, atlikus skaičiavimą TP*Point ir SL*Point tampa 10 irr 5 pipsai. O jei brokeris pvz yra uždėjęs apribojimą, kad minimalus atstumas turi būti 10 pipsų, tai ir gauni klaidą. Tačiau tai nepaaiškina kodėl gaunama klaida su 250 dar vienas dalykas - o brokeris kartais ne ECN kar panašaus tipo? ten SL/TP gali uždėti tik jau atidaręs orderį, arba pendinguose Myliu pinigus
Yra dviejų rūšių rinkos analitikai: vieni nežino kas bus, kiti nežino, kad jie nežino kas bus. |
|
2013-05-01 10:55 #342236 | |
Pabandyk:
Kodas: OrderSend(Symbol(),OP_BUY,1.0,Ask,0,Ask-250*Point,Ask+250*Point,"some comment",16384,0,Green);
|
|
2013-05-01 11:13 #342237 | |
Gabriel [2013-05-01 10:55]: Pabandyk: Kodas: OrderSend(Symbol(),OP_BUY,1.0,Ask,0,Ask-250*Point,Ask+250*Point,"some comment",16384,0,Green); Labai idomiai, neveikia vistiek, reikia pameginti ant kito brokerio. Na as meginu su EURUSD, brokeris: XeMarkets |
|
2013-05-01 11:27 #342238 | |
Reikia ne tik mėginti, bet ir į log'us kartais pažiūrėti.
Common sense is not very common
|
|
2013-05-01 11:47 #342240 | |
And OANDA tas pats, kai uzdedu TP SL nededa orderio
|
|
2013-05-01 12:52 #342255 | |
Ne visi brokeriai leižia iškart uždėti TP ir SL su OrderSend. Po OrderSend su nuliniais TP/SL gali daryti OrderModify su norimom reikšmėm.
|
|
2013-05-01 12:57 #342257 | |
Gabriel [2013-05-01 12:52]: Ne visi brokeriai leižia iškart uždėti TP ir SL su OrderSend. Po OrderSend su nuliniais TP/SL gali daryti OrderModify su norimom reikšmėm. meginau ir sita, orderi atidaro su nuliais, taciau nemodifikuoja kodas: |
|
2013-05-01 13:51 #342261 1 | |
rokasdude, kartoju - žiūrėk log'ą ir pagal klaidos kodus ieškok sprendimo. Pabandžiau paieškoti problemos už tave:
Kodas: int start() { int ticket = OrderSend(Symbol(),OP_BUYLIMIT,10,1.3,0,0,0); if(ticket == -1) { Print(GetLastError()); } else { int isModified = OrderModify(ticket,OrderOpenPrice(),1.3-200*Point,1.3+200*Point,OrderExpiration()); if(!isModified) { Print(GetLastError()); } } return(0); } Iš pradžių gavau ERR_TRADE_NOT_ALLOWED 4109 Trade is not allowed. Enable checkbox "Allow live trading" in the expert properties. Kai tai išsprendžiau, pavedimas iki brokerio nueina, bet modifikuojant gaunu klaidą ERR_INVALID_STOPS 130 Invalid stops. Tavo atveju bus kažkas panašaus. Būda kaip išsiaiškinti problemą aš tau parodžiau, toliau aiškinkis pats. Common sense is not very common
|
|
2013-05-01 14:01 #342262 | |
rokasdude [2013-05-01 12:57]: Gabriel [2013-05-01 12:52]: Ne visi brokeriai leižia iškart uždėti TP ir SL su OrderSend. Po OrderSend su nuliniais TP/SL gali daryti OrderModify su norimom reikšmėm. meginau ir sita, orderi atidaro su nuliais, taciau nemodifikuoja kodas: rokasdude, pastarajame tavo kode yra klaida: tiek TP, tiek SL tu parašei Ask-100*Point. Šiuo konkrečiu atveju (Short pozicija), SL turėtų būti Ask+100*Point |
|
2013-05-01 14:04 #342263 | |
rokasdude, štai tau veikiantis kodas:
Kodas: int start() { int ticket = OrderSend(Symbol(),OP_BUYLIMIT,10,1.3,0,0,0); if(ticket == -1) { Print(GetLastError()); } else { OrderSelect(ticket,SELECT_BY_TICKET); int isModified = OrderModify(ticket,OrderOpenPrice(),1.3-200*Point*10,1.3+200*Point*10,OrderExpiration()); if(!isModified) { Print(GetLastError()); } } return(0); } Išbandžiau OANDOJ: Kodas: 2013.05.01 14:03:04 test EURUSD,H4: removed
2013.05.01 14:03:04 test EURUSD,H4: uninit reason 0 2013.05.01 14:03:04 test EURUSD,H4: modify #........ buy limit 10.00 EURUSD at 1.30000 sl: 1.28000 tp: 1.32000 ok 2013.05.01 14:03:03 test EURUSD,H4: open #........ buy limit 10.00 EURUSD at 1.30000 ok 2013.05.01 14:03:02 test EURUSD,H4: loaded successfully Common sense is not very common
|
|
2013-05-01 14:37 #342265 | |
^la [2013-05-01 14:04]: rokasdude, štai tau veikiantis kodas: Kodas: int start() { int ticket = OrderSend(Symbol(),OP_BUYLIMIT,10,1.3,0,0,0); if(ticket == -1) { Print(GetLastError()); } else { OrderSelect(ticket,SELECT_BY_TICKET); int isModified = OrderModify(ticket,OrderOpenPrice(),1.3-200*Point*10,1.3+200*Point*10,OrderExpiration()); if(!isModified) { Print(GetLastError()); } } return(0); } Išbandžiau OANDOJ: Kodas: 2013.05.01 14:03:04 test EURUSD,H4: removed 2013.05.01 14:03:04 test EURUSD,H4: uninit reason 0 2013.05.01 14:03:04 test EURUSD,H4: modify #........ buy limit 10.00 EURUSD at 1.30000 sl: 1.28000 tp: 1.32000 ok 2013.05.01 14:03:03 test EURUSD,H4: open #........ buy limit 10.00 EURUSD at 1.30000 ok 2013.05.01 14:03:02 test EURUSD,H4: loaded successfully aciu, ismeginsiu, pasakysiu kaip gavosi |
|
2013-05-01 17:45 #342279 | |
^la [2013-05-01 14:04]: rokasdude, štai tau veikiantis kodas: Kodas: int start() { int ticket = OrderSend(Symbol(),OP_BUYLIMIT,10,1.3,0,0,0); if(ticket == -1) { Print(GetLastError()); } else { OrderSelect(ticket,SELECT_BY_TICKET); int isModified = OrderModify(ticket,OrderOpenPrice(),1.3-200*Point*10,1.3+200*Point*10,OrderExpiration()); if(!isModified) { Print(GetLastError()); } } return(0); } Išbandžiau OANDOJ: Kodas: 2013.05.01 14:03:04 test EURUSD,H4: removed 2013.05.01 14:03:04 test EURUSD,H4: uninit reason 0 2013.05.01 14:03:04 test EURUSD,H4: modify #........ buy limit 10.00 EURUSD at 1.30000 sl: 1.28000 tp: 1.32000 ok 2013.05.01 14:03:03 test EURUSD,H4: open #........ buy limit 10.00 EURUSD at 1.30000 ok 2013.05.01 14:03:02 test EURUSD,H4: loaded successfully tai kaip anas išmoks programuot jei už jį viską sukramtysime? Myliu pinigus
Yra dviejų rūšių rinkos analitikai: vieni nežino kas bus, kiti nežino, kad jie nežino kas bus. |
|
2013-05-01 17:59 #342280 | |
Kolektyvs, prašau laikytis saikingo citavimo principo ir kai nėra reikalo - necituoti! Ačiū.
Kaip anas išmoks programuoti, aš nežinau ir man nelabai įdomu. Šiuo atveju man pačiam buvo įdomu pakrapštyti MQL4 problemą ir pasižiūrėti kodėl anam galėtų neveikti. Mažu ir man pačiam kada MQL4 prireiks. Common sense is not very common
|
|
2013-05-01 19:02 #342286 | |
Na ismeginau, man irgi veikia, taciau cia BUY_LIMIT, kadangi man reikia OP_BUY, tj nelabai tinka :?
|
|
2013-05-01 19:14 #342288 | |
rokasdude [2013-05-01 19:02]: Na ismeginau, man irgi veikia, taciau cia BUY_LIMIT, kadangi man reikia OP_BUY, tj nelabai tinka :? rokasdude, kas tau trukdo OP_BUYLIMIT pakeist į OP_BUY? Kode papildomai tik reikia pakeisti fiksuotą 1.3 vertę į Ask. |
|
2013-05-01 20:09 #342293 | |
Meginau sita Egis_1974 orderi atidaro, bet modyfi nepadaro ir nedadeda SL ir TP
|
|
2013-05-01 20:12 #342294 | |
Orderio modifikavimo komandoje irgi reikėtų pakeisti statinę 1.3 kainą į dinaminę. Bandyk taip:
Kodas: OrderModify(ticket,OrderOpenPrice(),OrderOpenPrice()-200*Point*10,OrderOpenPrice()+200*Point*10,OrderExpiration());
|
|
2013-05-01 20:36 #342298 | |
sliux [2013-05-01 20:12]: Orderio modifikavimo komandoje irgi reikėtų pakeisti statinę 1.3 kainą į dinaminę. Taip, teisingai. Aš ankstesnėje žinutėje kaip tik ir siūliau 1.3 vertę visose trijose vietose (OrderSend() komandoje, SL išraiškoje bei TP išraiškoje) pakeisti į Ask. Turėtų veikti ir sliux siūlomas variantas SL išraiškoje ir TP išraiškoje panaudojant OrderOpenPrice(). |
|
2013-05-01 21:11 #342302 | |
Egis, modifikuojant Ask neveiks, nes mėgins nustatyti atidėto orderio atidarymo kainą į Ask, ko manau neleis nei vienas brokeris net ECN. Norint, kad modifikuojant orderio SL ir TP nepasikeistų jo atidarymo kaina, toje vietoje turi stovėti OrderOpenPrice(), atitinkamai norint pakeisti pvz tik SL arba tik TP, kitą parametrą atitinkamai keičiame į OrderTakeProfit() arba į OrderStopLoss(). Niekad nebandžiau jau įvykdytam orderiui Modify komandoje vietoje OrderOpenPrice nurodyti Ask/Bid. Gali būti, kad sistema neleis, nes Ask/Bid nesutaps su realia orderio atidarymo kaina, o modifikuoti kaip ir negalima jau atidaryto orderio kainos
Myliu pinigus
Yra dviejų rūšių rinkos analitikai: vieni nežino kas bus, kiti nežino, kad jie nežino kas bus. |