Forex Ordersend Error 130


Hvordan slå Orderend Error 130 i MetaTrader 4 Ved populær etterspørsel, har påvist strategier for hvordan man slår hvert algoritmisk trader8217s verste mareritt 8211 Feil 130 Hvor kommer denne feilen fra? Hva betyr det for din ekspertrådgiver Hvordan finner du delen av koden din? som forårsaker feilen Vi takler alt dette og more8230 For å starte, en formell definisjon fra vår venn, MQL4 Documentation: That8217s right Det er alt du får fra MetaQuotes. Og resten8230 Go-figuren Ordersend Error 130 er kort nevnt i andre deler av dokumentasjonen. Det er imidlertid ingen grundig veiledning til hva 8220Invalid Stops8221 egentlig betyr og hvordan man skal håndtere dette, kanskje mest vanlige problemet i Forex programmering. Men ikke en bekymring That8217s hvorfor jeg har skrevet denne artikkelen. Let8217s kommer gjennom dette sammen Den stille morderen So8230 du lanserte din ekspertrådgiver og8230, ingenting skjer. Nei KJØP bestillinger, ingen SELL ordrer, ingen ventende ordrer, ikke engang feilmeldinger i logs8230. Bare stillhet. Du bestemmer deg for å vente et par timer dager uker, og ingenting endres egentlig 8211 Kartene går opp og ned, men du ser ingen fortjeneste. Dette kan fortsette forever8230 Den virkelige grunnen er enkel 8211 you8217re får faktisk ERRINVALIDSTOPS (som er riktig teknisk begrep for problemet), men du kan ikke se det. Det er fordi 130 er en stille morder. En kaldblodet morder av hjernen din og indre ro Det er ingen måte å hente denne feilen gjennom ekspertrådgivere eller til og med terminallogger. Den eneste måten å fange det på er å legge til de riktige feilsikringsmekanismene i koden din. Here8217 er et eksempel du kan tilpasse til koden din: Det vi gjør her tar billettnummeret og at OrderSend () returnerer og kontrollerer om det er mindre enn null. Hvis ja, så er det et signal fra MetaTrader 4 som forteller oss at det var et problem med forespørselen. Feilkoden blir deretter skrevet ut på skjermen ved hjelp av Alert () og den innebygde GetLastError () - funksjonen. Denne koden vil gi et popup-vindu som i bildet oppe på toppen av denne artikkelen. Merk: Du kan bruke Print () i stedet for Alert () for å omdirigere meldingen direkte til EA8217s loggen i stedet for å vise den på skjermen. Kjerne av Ordersend Error 130 Ugyldige stopp er det virkelige navnet for den skyldige vi har å gjøre med i dag. Så hva betyr ugyldige stopp i MetaTrader 4 egentlig betyr For en markedsordre (KJØP eller SELL) ugyldige stopp betyr at StopLoss andor TakeProfit du forespurte ikke var mulig å angi for bestillingen din. Derfor, siden en forespørsel ikke kan oppfylles bare delvis, ble ordren ikke gjennomført i det hele tatt. For en ventende ordre (KJØP STOP, KJØP LIMIT, SELG STOPP eller SELL LIMIT) betyr ugyldige stopp at enten (1) det var problemer med SLTP (samme som ovenfor) ELLER (2) problemet var med inngangsprisen som du angav for selve bestillingen. Som vi kan se, er problemet alltid med en (eller mange) av prisene som din Forex Robot spesifiserte i sin forespørsel til handelsserveren. Nå som vi kjenner vår fiende 8211 let8217s slår det 1) StopLoss amp TakeProfit er priser Det er flere mulige årsaker til ERRINVALIDSTOPS, og en av de hyppigst blant nybegynnere er å spesifisere StopLoss og TakeProfit i pips i stedet for faktiske prisnivåer. Som dette: Vær imidlertid forsiktig Enkelte EA8217er har allerede moduler som vil registrere antall sifre etter desimaltallet, og vil automatisk justere inngangsparametrene for deg. I disse situasjonene kan multipliseringsinnganger med 10 faktisk føre til feilaktig ytelse. Merk: Jeg planlegger å legge inn en egen artikkel hvor vi skal diskutere hvordan man lager egne moduler for å oppdage antall sifre etter desimaltallet. 3) ECN-meglere ECN-kontoer har sine egne detaljer. En av dem er 8211 når de handler gjennom en ECN-megler, vil du ikke kunne sette en StopLoss andor TakeProfit med din markedsordre (KJØP eller SELL). Hvis du prøver å gjøre dette, vil du få Error 130. Du må selvfølgelig stille en StopLoss (og kanskje TakeProfit) for bestillingen din, og dette må gjøres så snart som mulig etter at bestillingen er utført. Prøv denne koden: Du kan legge denne funksjonen til koden din (i slutten) og deretter bruke den i stedet for OrderSend () i hovedkoden din. Denne funksjonen legger til et ekstra trinn i prosessen med å sende en markedsordre. Først sender den forespørselen om å utføre en markedsordre som fjerner StopLoss og TakeProfit. Deretter endrer den den nylig åpnede markedsordenen ved å legge til ønsket SL og TP. Det er selvsagt en risiko for at bestillingen vil bli utført, men endringen vil mislykkes. I så fall vil funksjonen straks varsle forhandleren om at StopLoss og TakeProfit ikke er innstilt. Du er velkommen til å endre denne funksjonen for å dekke dine behov og handelsstil. 4) Stoppnivåer Stoppnivåer er en mekanisme for meglere for å beskytte seg mot visse volatilitets - og likviditetsrelaterte risikoer. Enkelt sagt, vil du ikke kunne sette StopLoss eller TakeProfit OR en ventende rekkefølge nærmere enn et forutbestemt antall Pips til gjeldende markedspris. For å finne ut hva Stoppnivået er for et bestemt valutapar, må du trykke CTRLU på tastaturet ditt, velg ønsket valutapar og klikk på 8220Properties8221-knappen som vist på illustrasjonen nedenfor: I dette eksempelet er Stoppnivået for AUDUSD 3 Pips . Dette betyr at du ikke vil kunne sette StopLoss for bestillingen din nærmere enn 3 Pips til den prisen som bestillingen vil bli åpnet for. Dette betyr også at en ventende ordre må settes minst 3 Pips vekk fra dagens markedspris. Hvis du forsøker å bryte disse reglene og sette en StopLoss TakeProfit eller ventende ordre i Stop Level-området, vil det få Error 130 8220Invalid Stops8221. Så bare vær oppmerksom på Stoppnivået i valutaen der EA8217-ene handler 8211 don8217t angi overdrevent små StopLoss - og TakeProfit-parametere. Det er også verdt å merke seg at flere eksotiske valutapar kan ha mye mer signifikante stoppnivåer. For eksempel, for AUDNZD er Stoppnivået med samme megler som i eksemplet ovenfor 20 Pips. For GBPSEK (British Pound vs Swedish Krone) 8211 it8217s 100 Pips. 5) Normalisering av dobler Med noen meglere finner du at ukjent grunn er Ask og Bud-prisene overført til handelsmannen med ekstra ubetydelige tall etter desimaltallet. For eksempel: I stedet for 1.1606 vil megleren gi deg 1.160600001 Nå har dette fenomenet ingen effekt på manuell handel, siden MT4-terminalen er hardwired for å vise et visst antall siffer etter desimaltegnet (enten 4 eller 5) 8211, vil du ikke kan imidlertid se noen forskjell i det hele tatt. Disse 8216negligible8217 sifrene etter desimaltegnet kan imidlertid ha en dramatisk effekt på ekspertrådgivere forårsaker823082308230 that8217s right Vår gamle venn, OrderSend Error 130 Here8217 er en strategi som jeg personlig bruker for å beskytte mine robotter fra dette problemet: Dette pent lite triks gir deg mulighet til å normalisere (i enkle ord 8211 Runde) eventuelle priser du legger inn i OrderSend () - funksjonen. På denne måten klipper du av alle 8216negligible8217 sifrene etter desimaltegnet. Konklusjon I dag så vi at det kan være flere (minst 5) årsaker til feil 130. Selv om dette er ganske få, er de underliggende problemene alle trivielle og kan korrigeres i løpet av få minutter. Derfor bør Error 130 ikke fryktes Hvis du har oppdaget denne skyldige, er det bare et spørsmål om å gå gjennom listen over, finne den situasjonen som gjelder for deg og bruke den foreskrevne løsningen. Håper du fant denne artikkelen nyttig. Gi meg beskjed hvis du har noen spørsmål ved å bruke kommentarseksjonen nedenfor. Hva venter du på GÅ START MED FOREX TRADING ADADEMYint OrderSend (strengsymbol. Symbol int cmd. Drift dobbelt volum. Volum dobbelt pris. Pris int slippe. Slippe dobbelt stoploss. Stopp tap dobbelt takeprofit. Ta fortrekning kommentarenNULL. Kommentar int magic0 . magisk nummer datetime utløp0. venter på utløpsfarge pilcolorclrNONE farge) i symbol for handel. i driftstype. Det kan være en hvilken som helst av handelens opptelling. i antall partier. i Maksimal pris slippe for kjøp eller salg bestillinger. i Stop-tapsnivå. i Ta overskuddsnivå. i kommentarkommentar tekst. Siste del av kommentaren kan endres av server. i rekkefølge magisk nummer. Kan brukes som brukerdefinert ID. i utløpsdato for bestillingen (kun for ventende ordrer). i fargen på åpnings pilen på diagrammet. Hvis parameter mangler eller har CLRNONE verdi åpnings pil er ikke tegnet på diagrammet. Returnerer nummeret på billetten som tildeles ordren av handelsserveren eller -1 hvis den mislykkes. For å få ytterligere feilinformasjon må man ringe GetLastError () - funksjonen. Ved åpning av en markedsordre (OPSELL eller OPBUY), kan kun de siste prisene på Bud (for salg) eller Ask (for kjøp) brukes som åpen pris. Hvis operasjonen utføres med en sikkerhet som er forskjellig fra den nåværende, må MarketInfo () - funksjonen brukes med MODEBID eller MODEASK-parameteren for de siste sitatene for at denne sikkerheten skal oppnås. Beregnet eller unormalisert pris kan ikke brukes. Hvis det ikke har vært den forespurte åpne prisen i prisen tråden, eller den ikke har blitt normalisert i henhold til antall siffer etter desimaltall, vil feilen 129 (ERRINVALIDPRICE) bli generert. Hvis den forespurte åpne prisen er fullt utdatert, vil feilen 138 (ERRREQUOTE) bli generert uavhengig av glideparameteren. Hvis den forespurte prisen er utdatert, men presentert i tråden, vil bestillingen bli åpnet til gjeldende pris, og bare hvis nåværende pris ligger innenfor prisglasset. StopLoss og TakeProfit nivåer kan ikke være for nær markedet. Den minimale avstanden til stoppnivåer i poeng kan oppnås ved hjelp av MarketInfo () - funksjonen med MODESTOPLEVEL-parameteren. I tilfelle feilaktige eller unormaliserte stoppnivåer, vil feilen 130 (ERRINVALIDSTOPS) bli generert. En null verdi av MODESTOPLEVEL betyr enten fravær av begrensninger på minimal avstand for Stop LossTake Profit eller det faktum at en handelsserver bruker noen eksterne mekanismer for dynamisk nivåkontroll, som ikke kan oversettes til klientterminalen. I andre tilfelle kan GetLastError () returnere feil 130, fordi MODESTOPLEVEL faktisk er quotfloatingquot her. Ved plassering av en ventende ordre kan den åpne prisen ikke være for nær markedet. Den minimale avstanden til den ventende prisen fra det nåværende markedet en i poeng kan oppnås ved å bruke MarketInfo () - funksjonen med MODESTOPLEVEL-parameteren. I tilfelle feilaktig åpen pris på en ventende ordre, vil feilen 130 (ERRINVALIDSTOPS) bli generert. Påføring av ventende ordreutløpstid kan deaktiveres i enkelte handelsservere. I dette tilfellet, når en verdi ikke-null er angitt i utløpsparameteren, vil feilen 147 (ERRTRADEEXPIRATIONDENIED) bli generert. På enkelte handelsservere kan det totale antall åpne og ventende bestillinger være begrenset. Hvis denne grensen er overskredet, åpnes ingen ny ordre (eller ingen ventende ordre vil bli plassert) og handelsserver returnerer feil 148 (ERRTRADETOOMANYORDERS). -------------------------------------------------- ---------------- Skriptprogramstart-funksjon ------------------------------ ------------------------------------ ugyldig OnStart (Symbol (), MODESTOPLEVEL) Skriv ut (quotMinimum Stop Levelquot, minimumopplæring, quot pointsquot) dobbel pris Spør --- beregnet SL og TP priser må normaliseres dobbel stoppeløsning NormalizeDouble (Bid - minstoplevel Point. Digits) double takeprofit NormalizeDouble (Bid minimumoplevel Point . Digits) --- plasser markedsordre for å kjøpe 1 mye int billett OrderSend (Symbol (), OPBUY, 1, pris, 3, stoploss, takeprofit, quotMy orderquot, 16384,0, clrGreen) hvis (ticketlt0) Print (quotOrderSend mislyktes med feilmelding. GetLastError ()) ellers Skriv ut (quotOrderSend placed successfullyquot) --- Jeg lei åpningsordrer på testsystemet og også mottatt og feil 130. Jeg ble fortalt av Oanda at du ikke kan åpne bestillinger via EAer på kun en brukerkonto bo. Åpenbart ville det være galskap å teste det live. De sa at de ser på det, uansett hva det betyr. Bunnlinjen, hvis jeg ikke kan teste den, bruker jeg ikke den. Du kan imidlertid kjøre EA på strategistesten. men det gjør ikke det for meg, jeg må sørge for at min handlet blir gjennomført eiendom med Oanda, og den eneste måten i mitt sinn å gjøre det er å få det til handel på demo-kontoen først. Jeg tester min EA på Oanda metatrader-plattformen. Jeg kan imidlertid ikke åpne en posisjon med Ordersend. Error Orderend (130): Lot-size: 0.1, Ask: 1.3969, SL: 1.3899, TP: 1.4069 Hva er galt med bestillingen jeg senere fant og svar som jobbet for meg, går til: ToolsgtOptionsgtExpert Advisors TabgtCheck-boksen som sier quotAllow Live Tradingquot og lagre endringen. Du bør få et smil ansikt i øvre høyre hjørne av diagrammet. Også kontoen du handler må settes opp som en MT4-konto hos Oanda. det vil si at du kan opprette en underkonto, og når du gjør det, har det et alternativ for MT4 aktivert. Håper dette hjelper noen. Jeg fant senere og svaret som fungerte for meg, går til: ToolsgtOptionsgtExpert Advisors TabgtCheck-boksen som sier quotAllow Live Tradingquot og lagrer endringen. Du bør få et smil ansikt i øvre høyre hjørne av diagrammet. Også kontoen du handler må settes opp som en MT4-konto hos Oanda. det vil si at du kan opprette en underkonto, og når du gjør det, har det et alternativ for MT4 aktivert. Håper dette hjelper noen. Dette har ingenting å gjøre med Feil 130.

Comments