| Pages:
1
..
32
33
34
35
36
..
47 |
portfolioquanttrader2020
Member
 
Posts: 269
Registered: 30-4-2020
Member Is Offline
|
|
I correctly set the weight of the WFO 001, as Peter said.
Of the whole family 1, only one system had the same operations
I have not added commissions. I have only done what Peter said in the document
|
|
|
portfolioquanttrader2020
Member
 
Posts: 269
Registered: 30-4-2020
Member Is Offline
|
|
La curva original tiene período de 80 días in sample y out of sample correcto? Me refiero a la curva que se ve en todos los gráficos, por ejemplo en
este.
|
|
|
admin
Super Administrator
       
Posts: 5060
Registered: 7-4-2017
Member Is Offline
Mood: No Mood
|
|
THE FORUM doesn't translate to English your comments, so best do English.
(google translate would be fine)
the date in period A (Often 20160228) is 80 days in sample, and 80 days of out sample.
|
|
|
admin
Super Administrator
       
Posts: 5060
Registered: 7-4-2017
Member Is Offline
Mood: No Mood
|
|
the OOS has many more trades than in sample. That doesn't make it bad or wrong, but I prefer not such an extreme.
You can also look at the graphs by date instead of trade number to
that gives you a different perpective
|
|
|
admin
Super Administrator
       
Posts: 5060
Registered: 7-4-2017
Member Is Offline
Mood: No Mood
|
|
they are reasonably good. I tend to look for the entire family being good out of sample, and having reasonable wf.
see points 4 5 6 here
https://trademaid.info/gsbhelp/BuildingNasdaqSP500orDowsyste...
|
|
|
portfolioquanttrader2020
Member
 
Posts: 269
Registered: 30-4-2020
Member Is Offline
|
|
I have gotten this system that looks reasonably good, and with balance of trades in all three curves
|
|
|
portfolioquanttrader2020
Member
 
Posts: 269
Registered: 30-4-2020
Member Is Offline
|
|
Hello
1.Can the outputs be optimized?
2.And see the robustness of the outputs on a 3D graph?
|
|
|
admin
Super Administrator
       
Posts: 5060
Registered: 7-4-2017
Member Is Offline
Mood: No Mood
|
|
1) I'm not sure what you mean
2) no. Thats not greatly needed . You get a feel for parameters when you look here
Here is a system chosen at random
This is why I like high paramate stability. You can soo the 50,1 is rock solid
, thought the 1 doesn't really count as its sf ind weight which never changes.
if you had a 3d graph you would expect to see a peak at 50. We get more information here in that it peaks at 50 in all wf runs. A 3d graph will not
show you that. 3d graph has potential to be deceptive as its only showing the details over the entire data set. Also some parameters are muti
dimensional

|
|
|
Daniel UK1
Member
 
Posts: 470
Registered: 4-6-2019
Member Is Offline
|
|
On the bad side, Been away for some time due to serious health issues, The good part, mostly recovered and been able to get plenty of GSB research
done.
Food for thoughts, kind of contrarian perhaps
On ES,
VOLUME Choice :Tick volume provides for me, degrading results, contrary to the general view perhaps
Entry Mode: Closed filter does provide better results (for me) together with AIC but NOT on other perhaps "better/different" entry modes
Fitness Choice :NP x avg trd x NPLATEENTRY on ES has not been the best Fitness for me, other have produced better (preferred results for me) results
especially when it comes to systems in B (OOS).
In my picture, top left (B-F OOS) :Fitness, NP.AVGTRD.NPLateentry Bottom left: otherFitness type Bottom Right: same as bottom left but with
tickvolume.
The number in the bottom far right is the amount of systems in B
Stats derived from 4x50k runs
Would be interested to hear if others have found that the general used NQ,YM settings etc, has for them also worked best on ES?
Thoughts, A very good method as proposed and used by Peter is to narrow down main indicators to max 10,
in my humble opinion, are we not very susceptible to luck then?, when you decide for these 10, based on only one run, even though one are getting
final stats from 4 runs of the chosen final indicators, the decision to pick the top 10 will have a major impact on the end results, especially since
you run a new main indicator narrowing down for each new setting test i.e the indicators for each setting test is not static, is it then the changed
indicators or the changed setting that has created the better or worst results?.
Would another method such as narrowing down to top 25 (i.e creating more room for bad luck in indicator pick), and then run 4 runs for stats, not be
less susceptible to luck in picking top indicators for the run?
Above are just my personal thoughts.
Other views are appreciated.
Thank you Peter for your efforts in helping the GSB community

|
|
|
portfolioquanttrader2020
Member
 
Posts: 269
Registered: 30-4-2020
Member Is Offline
|
|
Hi peter
I have followed the steps for the CL and the statistics do not appear.
Step 1 and Step 2.
|
|
|
portfolioquanttrader2020
Member
 
Posts: 269
Registered: 30-4-2020
Member Is Offline
|
|
Hi peter
I have followed the steps for the CL and the statistics do not appear.
Step 1 and Step 2.
|
|
|
admin
Super Administrator
       
Posts: 5060
Registered: 7-4-2017
Member Is Offline
Mood: No Mood
|
|
I haven't done cl for a year or so, so don't remember much about it.
i do see the macro is running 1.5% of 50,000 systems
this should not be the case, and it will take forever.
follow this and use the macros shown
https://trademaid.info/gsbhelp/Crudeoilfastrevisedmethodolog...
|
|
|
portfolioquanttrader2020
Member
 
Posts: 269
Registered: 30-4-2020
Member Is Offline
|
|
I built 50,000 systems and then gave macro 6. I did it because when I did:
First I gave macro 6 and then I built systems and nothing appeared.
Thanks
|
|
|
Daniel UK1
Member
 
Posts: 470
Registered: 4-6-2019
Member Is Offline
|
|
Trader2020, for some reason either you have not saved the stats, or the macro you are using have not saved the stats...
If you try to take a system and right click and then save perf stats or any stats.. do they appear in the stats tab then ?
Try to isolate the problem, macro issue or an issue that you actually dont get any stats saved despite manually saving stats?
I dont know what macro 6 is, try to isolate the issue you are having, macro or stats issue
Cheers
|
|
|
Siem
Junior Member

Posts: 35
Registered: 14-11-2020
Location: NL
Member Is Offline
|
|
I'm experimenting a bit getting beyond the steps in the NQ/ES/YM help file (I hope it gets an update soon). In this step I'm running the walk-forward
on the members of a promising family.
There are differences between the output of the random space walk-forward vs the genetic walk-forward.
Random space performs a WF over the entire oscillator range. Genetic performs WF over a smaller range relative to the initial oscillator values.
Is the output of the random space walk-forward more valid than the genetic walk-forward since it tries out every possible combination values in the
oscillator range? If processing-power were of no concern would you choose to use the random space walk-forward?
|
|
|
admin
Super Administrator
       
Posts: 5060
Registered: 7-4-2017
Member Is Offline
Mood: No Mood
|
|
Quote: Originally posted by Siem  | I'm experimenting a bit getting beyond the steps in the NQ/ES/YM help file (I hope it gets an update soon). In this step I'm running the walk-forward
on the members of a promising family.
There are differences between the output of the random space walk-forward vs the genetic walk-forward.
Random space performs a WF over the entire oscillator range. Genetic performs WF over a smaller range relative to the initial oscillator values.
Is the output of the random space walk-forward more valid than the genetic walk-forward since it tries out every possible combination values in the
oscillator range? If processing-power were of no concern would you choose to use the random space walk-forward? |
No update to es/ym/nq as my ts has been crashing every day, and this is taking nearly all my time till it gets resolved.
Whats most important is you have the custom parameters macro to set the parameter range. Many of the initial parameters were far from ideal before
this.
under wf tab, I'm using nearest as 100%. Earlier on the default was 50% which I think is to narrow.
The main thing with wf is that the range is wide enough, and that enough itereations are done. Due to random sead, the same wf repeated can give
different results. Too few iterations will give greater variation in results (not great)
Not a simple answer beyond this. Brute force of every combination possible may or may not give better wf. I think +-100% = +-50% is good compromise.
Random space does not try all parameters possible, it tries SOME combinations over the full range.
Thanks received (1):
+1 Siem at 2021-05-28 05:56:29
|
|
|
bartek
Junior Member

Posts: 40
Registered: 26-3-2020
Member Is Offline
|
|
Quote: Originally posted by admin  | Quote: Originally posted by Siem  | I'm experimenting a bit getting beyond the steps in the NQ/ES/YM help file (I hope it gets an update soon). In this step I'm running the walk-forward
on the members of a promising family.
There are differences between the output of the random space walk-forward vs the genetic walk-forward.
Random space performs a WF over the entire oscillator range. Genetic performs WF over a smaller range relative to the initial oscillator values.
Is the output of the random space walk-forward more valid than the genetic walk-forward since it tries out every possible combination values in the
oscillator range? If processing-power were of no concern would you choose to use the random space walk-forward? |
No update to es/ym/nq as my ts has been crashing every day, and this is taking nearly all my time till it gets resolved.
Whats most important is you have the custom parameters macro to set the parameter range. Many of the initial parameters were far from ideal before
this.
under wf tab, I'm using nearest as 100%. Earlier on the default was 50% which I think is to narrow.
The main thing with wf is that the range is wide enough, and that enough itereations are done. Due to random sead, the same wf repeated can give
different results. Too few iterations will give greater variation in results (not great)
Not a simple answer beyond this. Brute force of every combination possible may or may not give better wf. I think +-100% = +-50% is good compromise.
Random space does not try all parameters possible, it tries SOME combinations over the full range. |
Peter which TS version do you use? 10 or Legacy? Which one works better on Windows Server 2019?
|
|
|
portfolioquanttrader2020
Member
 
Posts: 269
Registered: 30-4-2020
Member Is Offline
|
|
Hello
I have a systems in crude oil, but I can't replicate the results in TradeStation. The code is the one I put below
// Settings
// Platform: TradeStation
// Script Mode: LiveTrading
// ID: 20210528-095206-504213-5opGh
// Info: File Name Prefix: , Comment: , App Settings: CL30_indicatorpass2_j3_fromj2.gsbappset, Opt. Settings: CL30_indicatorpass2_j3_fromj2.gsboptset,
Workplace Manager's ID: VE6z4Yt6zkAE8JXpL.20210528-100854-793366, Manager's GSB Version: 1.0.62.42 / 2021-05-21, Worker's Instance ID:
i9pbviRZBlSDS35VF, Worker's GSB Version: 1.0.62.48 / 2021-05-27, Worker's Machine Name: NJ3_VM1-GSB
// Price Data: CL15.30: (Data1: CL\CL.1.Minute.0900-1430_ExchangeTime_20200409.txt (Mult.: 15, Session: "MOC @ 14:30"), Data2:
CL\CL.1.Minute.0900-1430_ExchangeTime_20200409.txt (Mult.: 30, Session: "MOC @ 14:30"))
// MaxBarsBack: 500
// Profits Mode: Currency
// Quantity: 1
// Quantity Mode: FixedShareContracts
// Trading Dates: 1900-01-01 - 2015-06-30
// Trading Dates Mode: Trd
// Trading Nth Day: 1
// Trading Nth Day Mode: All
// Exit Stop Loss: 1000
// Exit Profit Target:
// Exit Minutes:
// Exit Bars:
// Fitness Criteria: NetProfit * AvgTrade
// Entry Type: CrossDualLevels
// Commission: 0
// Slippage: 0
// Reports Commission: 0
// Reports Slippage: 0
// Commission Mode: TradePerSide
// Slippage Mode: TradePerSide
// Positions Allowed: LongAndShort
// Max. Entries per Day:
// Manager's GSB Version: 1.0.62.42 / 2021-05-21
// Worker's GSB Version: 1.0.62.48 / 2021-05-27
// Performance (full period)
// Fitness: 24,156,427.09
// Net Profit: 121,290
// Commission (in $): 0
// Drawdown: -6,390
// Avg Trade: 199.16
// Percent Profitable: 55.83
// Pearson: 0.944
// Profit Factor: 1.79
// Trades Count: 609
// Net Profit / -Drawdown: 18.98
// Inputs: // see warning at https://trademaid.info/gsbhelp/Script.html
Vars:
i1Data(2),
i1length(79),
i2Data(1),
i2length(50),
i3Data(2),
i3hPPeriod1(55),
i3hPPeriod2(65),
i1Weight(0.5),
i2Weight(0.75),
i3Weight(0.75),
entryParams(7),
entryParams2(-6),
iSFData(1),
iSFWeight(1),
sfEntryLevel(40),
stopLossValue(1000);
{
// If the statement below does not compile, please import the latest script file from C:\GSB\GSB (Managers)\TradeStation
Code\GSB_Scripts_2021_05_19.eld
Once
Begin
Value1 = GSB_Scripts_2021_05_19;
End;
}
// MaxBarsBack check
Once (MaxBarsBack <> 500)
Begin
RaiseRunTimeError("MaxBarsBack (Maximum number of bars strategy will reference) must be set to {0} (from Properties for All button, General tab)");
End;
// Vars
Vars:
id("20210528-095206-504213-5opGh"),
debugScriptPath("C:\GSB\Data\Debugs\20210528-095206-504213-5opGh.ts.mgr.bktst.txt"),
dateYmd(0),
timeHms(0),
isSessionOpen(False),
nthDay(1),
lastDate(0000101),
daysCount(-1),
weekDay(0),
currentBarDTOHLCV(""),
lastBarDTOHLCV(""),
v1(0, Data2),
v2(0, Data1),
v3(0, Data2),
vn1(0, Data2),
vn2(0, Data1),
vn3(0, Data2),
vSf(0, Data1),
vnSF(0, Data1),
result(0),
sfResult(0),
decision(0),
sfDecision(0),
flag(0),
zs(0.0000000001);
// Date YMD, Time HMS, and Day of week
dateYmd = Date + 19000000;
timeHms = StrToNum(BarDateTime.Format("%H%M%S"));
weekDay = DayofWeek(Date);
// Is-Session-Open
isSessionOpen = (weekDay = 0 And Time > 0000 And Time < 1430) Or (weekDay = 0 And Time > 1430 And Time < 2359) Or (weekDay = 1 And Time > 0000 And
Time < 1430) Or (weekDay = 1 And Time > 1430 And Time < 2359) Or (weekDay = 2 And Time > 0000 And Time < 1430) Or (weekDay = 2 And Time > 1430 And
Time < 2359) Or (weekDay = 3 And Time > 0000 And Time < 1430) Or (weekDay = 3 And Time > 1430 And Time < 2359) Or (weekDay = 4 And Time > 0000 And
Time < 1430) Or (weekDay = 4 And Time > 1430 And Time < 2359) Or (weekDay = 5 And Time > 0000 And Time < 1430) Or (weekDay = 5 And Time > 1430 And
Time < 2359) Or (weekDay = 6 And Time > 0000 And Time < 1430) Or (weekDay = 6 And Time > 1430 And Time < 2359);
// Contract's Session Close
If isSessionOpen = False Then
Begin
BuyToCover("SX-SsnDyCls") this bar on close;
Sell("LX-SsnDyCls") this bar on close;
End;
// Exit Stop Loss
SetStopLoss(stopLossValue);
// Indicators
v1 = GSB_SS_Stochastic(i1length) of Data(i1Data);
v2 = GSB_SS_Stochastic(i2length) of Data(i2Data);
v3 = GSB_DeCyclerOscillator(i3hPPeriod1, i3hPPeriod2) of Data(i3Data);
vn1 = GSB_Norm4(v1, 12, 100) of Data(i1Data);
vn2 = GSB_Norm4(v2, 12, 100) of Data(i2Data);
vn3 = GSB_Norm4(v3, 12, 100) of Data(i3Data);
vSF = GSB_CloseLessPrevHighD of Data(iSFData);
vnSF = GSB_Norm4(vSF, 12, 100) of Data(iSFData);
// Result and decision
result = ((Sign(vn1) * Power(Absvalue(vn1), i1Weight)) * ((Sign(vn2) * Power(Absvalue(vn2), i2Weight)) * (Sign(vn3) * Power(Absvalue(vn3),
i3Weight))));
result = Sign(Sign(vn1) + Sign(vn2) + Sign(vn3)) * Absvalue(result);
result = IFF(AbsValue(result) > zs, result, 0);
// entry type = CrossDualLevels
decision = GSB_Decision4(result, 4500, Sign(entryParams) * Power(AbsValue(entryParams), 4), Sign(entryParams2) * Power(AbsValue(entryParams2), 4));
// SF Decision
sfResult = vnSF * iSFWeight;
sfResult = IFF(AbsValue(sfResult) > zs, sfResult, 0);
sfDecision = GSB_Decision4(sfResult, 2000, sfEntryLevel, 0);
currentBarDTOHLCV = NumToStr(BarDateTime.ELDateTimeEx, 9) + NumToStr(Open, 9) + NumToStr(High, 9) + NumToStr(Low, 9) + NumToStr(Close, 9) +
NumToStr(Volume, 9);
// Entry-filter check
flag = 0;
If True
And (currentBarDTOHLCV <> lastBarDTOHLCV)
And ((timeHms >= 000000 And timeHms <= 143000))
And (isSessionOpen = True) Then
Begin
// Buy/Sell
If (decision = 1 Or decision = 2) And sfDecision = 1 Then
Begin
Buy("Long Entry") 1 contracts this bar on close;
flag = 1;
End
Else If (decision = -1 Or decision = 2) And sfDecision = -1 Then
Begin
SellShort("Short Entry") 1 contracts this bar on close;
flag = -1;
End;
End;
// Decision Exit (I/SF)
If flag = 0 And CurrentContracts > 0 AND GSB_DecisionExit2(decision, sfDecision, 0) = 1 Then
Begin
BuyToCover("SX-None") this bar on close;
Sell("LX-None") this bar on close;
End;
lastBarDTOHLCV = currentBarDTOHLCV;
// Hash (DO NOT CHANGE)
|
|
|
admin
Super Administrator
       
Posts: 5060
Registered: 7-4-2017
Member Is Offline
Mood: No Mood
|
|
@portfolioquanttrader2020
need anydesk / teamviewr to fix this. You can email me. Always need the gsb and ts/mc on the machine at the same time to diagnose it.
Most common problem is session time on gsb <> TS. The CL data with gsb was central USA time. If your pc is not on that time you will need to adjust
all references to time on your code.
|
|
|
admin
Super Administrator
       
Posts: 5060
Registered: 7-4-2017
Member Is Offline
Mood: No Mood
|
|
Quote: Originally posted by bartek  | Quote: Originally posted by admin  | Quote: Originally posted by Siem  | I'm experimenting a bit getting beyond the steps in the NQ/ES/YM help file (I hope it gets an update soon). In this step I'm running the walk-forward
on the members of a promising family.
There are differences between the output of the random space walk-forward vs the genetic walk-forward.
Random space performs a WF over the entire oscillator range. Genetic performs WF over a smaller range relative to the initial oscillator values.
Is the output of the random space walk-forward more valid than the genetic walk-forward since it tries out every possible combination values in the
oscillator range? If processing-power were of no concern would you choose to use the random space walk-forward? |
No update to es/ym/nq as my ts has been crashing every day, and this is taking nearly all my time till it gets resolved.
Whats most important is you have the custom parameters macro to set the parameter range. Many of the initial parameters were far from ideal before
this.
under wf tab, I'm using nearest as 100%. Earlier on the default was 50% which I think is to narrow.
The main thing with wf is that the range is wide enough, and that enough itereations are done. Due to random sead, the same wf repeated can give
different results. Too few iterations will give greater variation in results (not great)
Not a simple answer beyond this. Brute force of every combination possible may or may not give better wf. I think +-100% = +-50% is good compromise.
Random space does not try all parameters possible, it tries SOME combinations over the full range. |
Peter which TS version do you use? 10 or Legacy? Which one works better on Windows Server 2019? |
Good question.
I was going to be the last person in the world who goes to ts 10. Its reputation had been very poor, and there is nothing at all I want in it compared
to ts9.5.
All I want in the next build of ts is more stability and 64 bit. TS 10 had neither.
TS 9.5 has been stable for me as long as you reboot once a week, and don't open too many charts with data going back many years.
Ive crashed every day this week except today 
see https://community.tradestation.com/Discussions/Topic.aspx?To...
You would hope ts10 gets more stable over time, but for me there is zero reason to upgrade.
Ive used server 2019 for years, and due to crashing tried win10 as ts don't officially support server. Personally I prefer windows server.
Thanks received (1):
+1 bartek at 2021-05-28 18:22:34
|
|
|
admin
Super Administrator
       
Posts: 5060
Registered: 7-4-2017
Member Is Offline
Mood: No Mood
|
|
Quote: Originally posted by Daniel UK1  | On the bad side, Been away for some time due to serious health issues, The good part, mostly recovered and been able to get plenty of GSB research
done.
Food for thoughts, kind of contrarian perhaps
On ES,
VOLUME Choice :Tick volume provides for me, degrading results, contrary to the general view perhaps
Entry Mode: Closed filter does provide better results (for me) together with AIC but NOT on other perhaps "better/different" entry modes
Fitness Choice :NP x avg trd x NPLATEENTRY on ES has not been the best Fitness for me, other have produced better (preferred results for me) results
especially when it comes to systems in B (OOS).
In my picture, top left (B-F OOS) :Fitness, NP.AVGTRD.NPLateentry Bottom left: otherFitness type Bottom Right: same as bottom left but with
tickvolume.
The number in the bottom far right is the amount of systems in B
Stats derived from 4x50k runs
Would be interested to hear if others have found that the general used NQ,YM settings etc, has for them also worked best on ES?
Thoughts, A very good method as proposed and used by Peter is to narrow down main indicators to max 10,
in my humble opinion, are we not very susceptible to luck then?, when you decide for these 10, based on only one run, even though one are getting
final stats from 4 runs of the chosen final indicators, the decision to pick the top 10 will have a major impact on the end results, especially since
you run a new main indicator narrowing down for each new setting test i.e the indicators for each setting test is not static, is it then the changed
indicators or the changed setting that has created the better or worst results?.
Would another method such as narrowing down to top 25 (i.e creating more room for bad luck in indicator pick), and then run 4 runs for stats, not be
less susceptible to luck in picking top indicators for the run?
Above are just my personal thoughts.
Other views are appreciated.
Thank you Peter for your efforts in helping the GSB community

|
Sorry for late reply. Ive been tied up this week.
tick volume is up & down volume. The alternative is up volume only. Logic says we should use up and down. I got very different stats using up volume.
I think earlier stats dates were better, and later ones worse. Likely you should go with what the stats guide you, though I'm note sure why your
results varied to mine. I think closed filter (with closehighlow3) reduced dd a bit. Adding more indicators will degrade results and increase
diversity. You also will get less members in each family.
I don't like that as I want to see who entire families go out of sample and when wf.
Check also your weights were zero on aic. (forced to be the case in the most current build)
Can say been a great month for nq systems. After today's loss's on nq, I'm up about 18 k on nq alone for the month (7 contracts in total over about 4
systems)
|
|
|
portfolioquanttrader2020
Member
 
Posts: 269
Registered: 30-4-2020
Member Is Offline
|
|
I have clicked twice on the macro and now there are more systems doing in WFO.
Yesterday did not finish doing the WFO on the systems.
I do not know if something is happening, or the WFO does not work
|
|
|
portfolioquanttrader2020
Member
 
Posts: 269
Registered: 30-4-2020
Member Is Offline
|
|
Hello
I am trying to do the WFO on crude oil following the methodology, and the macro does not do the WFO
|
|
|
Daniel UK1
Member
 
Posts: 470
Registered: 4-6-2019
Member Is Offline
|
|
Quote: Originally posted by portfolioquanttrader2020  | I have clicked twice on the macro and now there are more systems doing in WFO.
Yesterday did not finish doing the WFO on the systems.
I do not know if something is happening, or the WFO does not work |
Hi Portfolioquanttrader2020,
Not sure i understant you correct, but is your problem that you believe you have, that your systems are in "waiting" status and have been like that
since yesterday ? if so, there is no problem, when using the cloud you can have that status for sever days since you are waiting for resources to
become free.
One could also understand your message that you have built your own macro to forward to WFO software? i assume this is not the case?
One thing i notice myself, when relying on cloud, is that WF can take a very long time to finish, and its not possible in a good way to cancel if one
gets tired of waiting, and then finish WF in single thread or multi on your own server just to finish the macro you are using, because if wf system
once initiated is canceled by your manually and then started again it can and most often can turn back to cancel status making the macro not starting
since its waiting for a finished status of your WF. So end result is that you end up having done all your WF but status is still in cancel.. i think
this is a bug though..
Solution, not to rely on cloud to much
|
|
|
portfolioquanttrader2020
Member
 
Posts: 269
Registered: 30-4-2020
Member Is Offline
|
|
I understand that the image that I put is a good system. It is right? Can any of you explain to me why you would choose this system based on the
images?

|
|
|
| Pages:
1
..
32
33
34
35
36
..
47 |