Welcome to the new Traders Laboratory! Please bear with us as we finish the migration over the next few days. If you find any issues, want to leave feedback, get in touch with us, or offer suggestions please post to the Support forum here.
rkurzon
Members-
Content Count
7 -
Joined
-
Last visited
Personal Information
-
First Name
TradersLaboratory.com
-
Last Name
User
-
Country
United States
-
Gender
Male
Trading Information
-
Vendor
No
-
In your message where you say "dtop of 5 bars back" I assume you meant stop of 5 bars back. I can code what you want but please clarify what you mean by a stop of 5 bars back? open, high, low, close of 5 bars back or something else.
-
You are very welcome. I received a lot of help from a lot of people over the years and very honestly continue to receive help. This is one of the toughest professions in the world and at very least it could become just a little easier if we help one another. Feel free to ask anytime. Regards, Randall
-
Well, binthere got back to me and said the code would not start trading again after the time out. That's what I get for not testing my code :crap:. Below it is fixed and tested :-). It will reset on a change in date or exceeding the win/loss amount and will not trade for the time out period after that change. There are other ways to reset it, such as session end, session start, a specific time, etc., etc. I have included the code here as a simple system that buys on one bar and exits on the next. I have also included the code (at bottom of system code) I use for de-bugging with the expert commentary. Just set the "Comm" input to true and using the expert commentary you can click anywhere on the chart to see the values at the close of that bar. Many people may also use a print statement for de-bugging but I personally prefer to use the commentary. All of this goes to show something that I learned a long time ago but foolishly failed to implement here- always, always check your code to make sure it is doing what you think. More often than not code looks great and might do what you think part of the time but check, re-check, and re-check again. I hate to imagine how many great ideas have been discarded because they were coded wrong and failed. I apologize for the error. ELD attached, coded in TS 8.6 Input: NumberWinningTrades(5), NumberLosingTrades (5), TimeOutMin(5), Comm(FALSE); Vars: TradeOff(FALSE), StopTime(0), StartAgainTime(0), WinTrades(0), LoseTrades(0), LCount(0), WCount(0), MP(0); LoseTrades = NumLosTrades; WinTrades = NumWinTrades; MP = marketposition; //reset all on date change or first bar //you could reset here for whatever you choose if currentbar = 1 or date <> date[1] then begin StopTime = time; StartAgainTime = calctime(StopTime, TimeOutMin); TradeOff = TRUE; WCount = 0; LCount = 0; end; //track win/lose trade count (note reset above and date = date[1]) //will not carry count over after date change- easy to change this if date = date[1] then begin if LoseTrades > LoseTrades[1] then LCount = LCount +1; if WinTrades > WinTrades[1] then WCount = WCount +1; end; //set TradeOff to TRUE and StopTime to time when win/lose trades was exceeded if (WCount >= NumberWinningTrades) or (LCount >= NumberLosingTrades) then begin TradeOff = TRUE; StopTime = time; //calculate time to start again (add TimeOutMin to StopTime) StartAgainTime = calctime(StopTime, TimeOutMin); WCount = 0; LCount = 0; end; //reset TradeOff if TradeOff = TRUE and time >= StartAgainTime then TradeOff = FALSE; //allow entries if TradeOff = FALSE then begin if MP = 0 then buy next bar at market; end; if MP = +1 then sell next bar at market; //beging expert commentary code used for debugging if Comm then begin Vars: Str0(""), Str1(""), Str2(""), Str3(""), Str4(""), String1(""); #BeginCmtryOrAlert if CommentaryEnabled and AtCommentaryBar then begin if TradeOff = TRUE then Str0 = "TRUE" else Str0 = "FALSE"; String1 = newline + newline + " TimedTrades_Sys " + newline + newline + " Date = " + NumToStr(Date, 0) + newline + " Time = " + NumToStr(Time, 0) + newline + " Open = " + NumToStr(Open, 4) + newline + " Close = " + NumToStr(Close, 4) + newline + " High = " + NumToStr(High, 4) + newline + " Low = " + NumToStr(Low, 4) + newline + newline + " MP = " + NumToStr(MP, 0) + newline + " TradeOff = " + Str0 + newline + " StopTime = " + NumToStr(StopTime, 0) + newline + " StartAgainTime = " + NumToStr(StartAgainTime, 0) + newline + " LoseTrades = " + NumToStr(LoseTrades, 2) + newline + " WinTrades = " + NumToStr(WinTrades, 2) + newline + " WCount = " + NumToStr(WCount, 2) + newline + " LCount = " + NumToStr(LCount, 2) + newline + newline; Commentary(String1); end; #end; end;// comm end TIMEDTRADES.ELD
-
My pleasure. If you have any further difficulties feel free to let me know. Regards, Randall
-
There are many ways to do it but I slapped this together and it should do what you want. Could probably be done a little neater but it does verify. Input: NumberWinningTrades(111), NumberLosingTrades (111), TimeOutMin(15); Vars: TradeOff(FALSE), StopTime(0), StartAgainTime(0), WinTrades(0), LoseTrades(0), LCount(0), WCount(0); LoseTrades = NumLosTrades; WinTrades = NumWinTrades; //reset win/lose and TradeOff here on start of new day or firstbar after maxbarsback //I am resetting it on new day but you can reset with anything, session time, another calctime, etc., etc. if currentbar = 1 or date <> date[1] then begin TradeOff = FALSE; WCount = 0; LCount = 0; end; //track win/lose trade count if LoseTrades > LoseTrades[1] then LCount = LCount +1; if WinTrades > WinTrades[1] then WCount = WCount +1; //set TradeOff to TRUE and StopTime to time when win/lose trades was exceeded if (WCount >= NumberWinningTrades) or (LCount >= NumberLosingTrades) then begin TradeOff = TRUE; StopTime = time; end; //calculate time to start again (add TimeOutMin to StopTime) StartAgainTime = calctime(StopTime, TimeOutMin); //reset TradeOff to FALSE after TimeOutMin to allow trading again on the same day //reset trade counters to zero also if TradeOff = TRUE and time > StartAgainTime then begin TradeOff = FALSE; WCount = 0; LCount = 0; end; //allow entries if TradeOff = FALSE then begin //strategy entries end;
-
How much experience do you have with EasyLanguage? You can use the PositionProfit function to count the losers and winners then when you reach the count use calctime to time it. Don't forget to re-set the count at the end of the day or session. If you like I can code it up for you (no charge) but if you are experienced then this info should answer your question. Glad to help if you want me to code it. Randall
-
Just Started Paper Trading and Thinking of Doing the Real Thing
rkurzon replied to Chem's topic in Beginners Forum
I have not posted before but thought I would quick jump in with a couple of comments. I use Tradestation and have for about 15 years so some things may be different in other platforms. When trading SIM in most platforms (especially Tradestation) if you have a limit order sitting as soon as the price touches it Tradestation executes it as filled. Most times in real trading this will not happen unless the price is racing through your limit. I have had orders in real life sitting in the ES and the price gets hit 10-15 times or more and no fill. Depend on where you are in the stack of orders sitting there. Stops, on the other hand will always get filled but often with slippage. Same for MIT orders. I have been programming in Tradestation for the last 15 years and have had a really great mentor helping me as well. There are many, many "gotchas" in the way you write a trading system. It is very easy to write a system that will back test beautifully but fail miserably in real trading. The gotchas are too many to list here but I have found that for the most part people write code improperly and great ideas fail while lousy ones seem to work only because of the way the code is written. Successful trading methods are very complex and hard to find. Most winning traders do not even fully realize all the factors involved in their decision making process. I know, because we have programmed what traders thought they did to trade and the results and entries were very different from what they actually did. The human brain is incredible and many traders process huge amounts of information for any simple trade. If you have the psychological of a winning trader then discretionary trading is the way to go. You MUST have a winning strategy!!! If you do not have the psychological makeup required then you will fail with even the best method. In that case you would need an automated system written correctly based on a proven winning strategy- aka The Holy Grail. In my opinion winning consistently in trading takes years if not decades of study and experience, definitely not months.